一、概念
服务是一个长生命周期的、没有用户界面的程序,一般服务是在后台做耗时操作,所以可以使用服务来开发如监控类的程序。
二、服务的创建、注册、启动
1、服务的创建
开发Service组件与Activity一样,需要写一个子类继承Service,并重写相关的方法,如:
public class MyService extends Service {...}
2、服务的注册
在AndroidMenifest.xml文件中注册Service:
<service android:name="com.example.test.Service"></service>
或者:
<service android:name="com.example.test.MyService">
<intent-filter >
<action android:name="MyService"/>
</intent-filter>
</service>
3、服务的启动与停止
Intent intent = new Intent();
//intent.setClass(MainActivity.this, MyService.class);
intent.setAction("com.fs.service.MyService");
(1)启动/停止服务:使用Context.startService() 方法启动服务,使用Context.stopService()方法停止服务。
(2)绑定/解绑服务:使用Context.bindService()方法绑定服务,使用 Context.unbindService()方法解绑服务。
4、启动服务与绑定服务的区别
服务不能自己运行,需要通过调 用 Context.startService() 或Context.bindService() 方法启动服务。这两个方法都可以启动Service,但是它们的使用场合有所不同。
(1)使用 startService() 方法启用服务,访问者与服务之间没有关联,即使访问者退出了,服务仍然运行。
(2)使用 bindService() 方法启用服务,访问者与服务绑定在了一起,访问者一旦退出,服务也就终止。
(3)采用 Context.startService() 方法启动服务,只能调用 Context.stopService() 方法结束服务,服务结束时会调用 onDestroy() 方法。【注意:服务的生命周期方法都是在主线程执行,所以不能直接在服务里面做耗时操作做,如果需要做耗时操作,应该在服务里面开启子线程。】
(4)通过 startService() 和 stopService( ) 启动和关闭服务。适用于服务和访问者之间没有交互的情况。
(5)如果服务和访问者之间需要方法调用或者传递参数,则需要使用 bindService() 和 unbindService() 方法绑定和解绑服务。
三、服务的生命周期
1、启动、绑定服务的生命周期
2、混合启动绑定服务的生命周期