Service跟Windows系统里的服务概念差不多,都在后台执行,它跟Activity的最大区别就是,它是无界面的

开发Service与开发Activity的步骤类似

1.定义一个继承Service的子类

2.在AndroidManifest.xml文件中配置该Service

Service与Activity还有一点相似之处,它们都是从Context派生出来的,因此它们都可调用Context里定义的如getResources(),getContentResolver()等方法

下面写一个简单的Service例子

先定义一个Service类

  1. package WangLi.IO.FirstService;
  2. import android.app.Service;
  3. import android.content.Intent;
  4. import android.os.IBinder;
  5. public class FirstService extends Service {
  6. //必须实现的方法
  7. @Override
  8. public IBinder onBind(Intent intent) {
  9. // TODO Auto-generated method stub
  10. return null;
  11. }
  12. //Service被创建时回调方法
  13. public void OnCreate()
  14. {
  15. super.onCreate();
  16. System.out.print("Service is Created");
  17. }
  18. //Service启动时回调该方法
  19. public int onStartCommand(Intent intent,int flags,int startId)
  20. {
  21. System.out.println("Service is Started");
  22. return START_STICKY;
  23. }
  24. //Service被关闭之前被回调
  25. public void onDestroy()
  26. {
  27. super.onDestroy();
  28. System.out.println("Service is Destroyed");
  29. }
  30. }

上面几个关键方法都可以看到,Service的执行就在方法内写上相应的功能代码,在不同阶段执行

Service跟Activity一样,也需要在AndroidManifest.xml文件中注册,注册配置配置<intent-filter.../>子元素,设置Service可被哪些Intent启动

  1. <service android:name="FirstService" >
  2. <intent-filter>
  3. <action android:name="WangLi.IO.First_Service"></action>//注意小必须要注册!!!!
  4. </intent-filter>
  5. </service>

建一个界面类Activity,放上两个按钮,一个用来启动Service,一个用来停止Service

  1. package WangLi.IO.FirstService;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.View.OnClickListener;
  7. import android.widget.Button;
  8. public class MainActivity extends Activity {
  9. Button start, stop;
  10. @Override
  11. public void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.main);
  14. // 获取界面上的start,stop两个按钮
  15. start = (Button) findViewById(R.id.start);
  16. stop = (Button) findViewById(R.id.stop);
  17. // 创建启动Service的Intent
  18. final Intent intent = new Intent();
  19. // 为Intent设置Action属性
  20. intent.setAction("WangLi.IO.First_Service");
  21. start.setOnClickListener(new OnClickListener() {
  22. @Override
  23. public void onClick(View arg0) {
  24. // 启动指定Service
  25. startService(intent);
  26. }
  27. });
  28. stop.setOnClickListener(new OnClickListener() {
  29. @Override
  30. public void onClick(View v) {
  31. // 停止指定Service
  32. stopService(intent);
  33. }
  34. });
  35. }
  36. }

注意startService,和stopService这两个方法

下面是程序界面

下面logcat记录的Service启动和关闭过程

此外,有一点值得注意,多次启动一个已有的Service组件将不会再调用onCreate方法,但每次启动时都会回调onStart方法

注意:bindservice和startservice的启动对应的方法!

初学Android,创建,启动,停止Service(五十八)的更多相关文章

  1. Andriod的国际化-android学习之旅(五十八)

    android资源国际化

  2. Android简易实战教程--第五十话《动画扫描》

    祝新年快乐!2017(一起)前行. 转载博客请注明出处:道龙的博客 本篇简答的小案例,使用动画知识,完成一个类似雷达扫描效果,并且加入自定义进度条.对于自定义进度条前面有很详细的解析和案例了,本篇就结 ...

  3. Android创建启动画面[转]

    每个Android应用启动之后都会出现一个Splash启动界面,显示产品的LOGO.公司的LOGO或者开发者信息.如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段枯燥 ...

  4. Android创建启动画面

    每一个Android应用启动之后都会出现一个Splash启动界面,显示产品的LOGO.公司的LOGO或者开发人员信息.假设应用程序启动时间比較长,那么启动界面就是一个非常好的东西,能够让用户耐心等待这 ...

  5. 【OF框架】使用OF.WinService项目,添加定时服务,进行创建启动停止删除服务操作

    准备 使用框架搭建完成项目,包含OF.WinService项目. 了解Window Service 和定时服务相关知识. 一.添加一个定时服务 第一步:了解项目结构 第二步:创建一个新的Job 第三步 ...

  6. Android笔记(五十八)Android总结:四大组件——Activity篇

    什么是Activity Activity是一种包含用户界面的组件,主要用于和用户进行交互,一个APP通常由多个Activity组成. 每个Activity都对应一个布局文件,通过setContentV ...

  7. 从头学起android&lt;AudioManager 声音编辑器.五十.&gt;

    我们用android经常使用的时候,手机的声音增大和缩小操作.在设定场景模式,它往往使用静音和振动运行,这通常是AudioManager来控制的. 今天我们就来看一下AudioManager 的使用. ...

  8. Android简易实战教程--第五十一话《使用Handler实现增加、减少、暂停计数》

    转载博客请注明出处:道龙的博客 之前,写过一篇使用异步任务AysncTask实现倒计时的小案例,喜欢的话可以参考博客:Android简易实战教程--第三十三话< AsyncTask异步倒计时&g ...

  9. Android的资源类型和存储方式简介-android学习之旅(五十二)

    android资源的类型 android资源的存储方式

随机推荐

  1. MQTT 客户端源码分析

    参看:逍遥子_mosquitto源码分析系列 参看:MQTT libmosquitto源码分析 参看:Mosquitto学习笔记 一.目录结构 首先我们还是来看一下 mosquitto-1.4.14 ...

  2. Http协议-URI和资源

    所有东西都有一个标准化的名字,以帮助人们寻找城市中的各种资源.书籍有ISBN号,公交车有线路号,银行账户有账户编码,人有身份证,街道有街道名称.人们告诉图书馆管理员书籍的ISBN号,他即可找出该书籍的 ...

  3. QualType in clang

    http://clang.llvm.org/docs/InternalsManual.html#the-qualtype-class the QualType class is designed to ...

  4. openstack介绍(二)

    OpenStack services 本节将详细描述OpenStack服务. Compute service overview(计算服务概述) 使用OpenStack云计算计算主机和管理系统.Open ...

  5. Java集合Set、Map、HashSet、HashMap、TreeSet、TreeMap等

    1.Set和Map的关系: Set代表一种集合元素无序.不可重复的集合,Map代表一种由多个key-value对组成的集合. Set的集合继承体系: Map关系集合 Map集合的key特征:所有key ...

  6. SpringCloud学习系列之七 ----- Zuul路由网关的过滤器和异常处理

    前言 在上篇中介绍了SpringCloud Zuul路由网关的基本使用版本,本篇则介绍基于SpringCloud(基于SpringBoot2.x,.SpringCloud Finchley版)中的路由 ...

  7. pandas基础(2)_多重索引

    1:多重索引的构造 >>> #下面显示构造pd.MultiIndex >>> df1=DataFrame(np.random.randint(0,150,size= ...

  8. Manacher(hdu3068最长回文)

    浅谈manacher算法 manacher算法是我在网上无意中找到的,主要是用来求某个字符串的最长回文子串. 不过网上的版本还不太成熟,我就修改了下. 不要被manacher这个名字吓倒了,其实man ...

  9. pytest框架(五)

    代码示例一 # coding=utf-8 import pytest @pytest.fixture() def login(): print("输入账号,密码先登录") def ...

  10. python——类与对象

    __init__ 方法: 1.Init  初始化方法的返回值必须是None. 3.类没有定义阶段,函数有定义阶段(不调用不执行). 实例化时触发__init__方法执行,为对象添加属性.[t1=stu ...