Service与Activity相对应,Activity负责前台页面的展现;Service是一个应用程序组件,没有图形化界面,通常用来处理比较耗时的操作,
可以使用Service来更新ContentProvider(当数据需要在应用程序之间共享时,可以在某程序中使用 ContentProvider 定义 URI, 以使其它应用程序可以通过此 URI 访问指定的数据),发送intent以及启动系统的通知等等。
Service不是一个单独的进程;Service不是一个线程。
Service的生命周期
1. 被startService的
无论是否有任何活动绑定到该Service,都在后台运行。onCreate(若需要) -> onStart(int id, Bundle args). 多次startService,则onStart调用多次,但不会创建多个Service实例,只需要一次stop。该Service一直后台运行,直到stopService或者自己的stopSelf()或者资源不足由平台结束。
2. 被bindService的
调用bindService绑定,连接建立服务一直运行。未被startService只是BindService,则onCreate()执行,onStart(int,Bundle)不被调用;这种情况下绑定被解除,平台就可以清除该Service(连接销毁后,会导致解除,解除后就会销毁)。
3. 被启动又被绑定
类似startService的生命周期,onCreate onStart都会调用。
4. 停止服务时
stopService时显式onDestroy()。或不再有绑定(没有启动时)时隐式调用。有bind情况下stopService()不起作用。
注:需要在AnndroidManifest.xml中配置Service
- <service android:name="MyService">
- <intent-filter>
- <action android:name="jtapp.myservicesamples.myservice"></action>
- </intent-filter>
- </service>