【6.8】Service的1点理解

【6.8】Service的一点理解

与Activity不同,Service 自启动,运行在后台,不能与用户交互,退出应用时,Service还能运行。如MP3播放

 

Service的生命周期:onCreate -> onStart -> onDestroy (其中Service在onDestroy之前,onCreate只执行一次,onStart可以执行多次)

 

步骤:

 

1)创建一个Service类继承自Service,其中有onCreate(),onStart(Intent intent, int startId),onDestroy(),onBind()四个方法可以重写,其中onBind()一定要重写

 

2)在AndroidManifest.xml中注册Service,其中android:name要和创建的Service完全一致

 

3)开始服务:startService(intent);结束服务:stopService(intent)

 

 

绑定Service和Activity

 

假如没有结束服务的话,Service会一直运行直至关机,所以绑定可以使Activity在onStop时同时销毁Service

 

绑定的Service的生命周期:onCreate -> onBind -> onUnbind -> ondestroy

 

 

MyService类中定义了一个MyBinder类,该类实际上是为了获得MyService的对象实例的。在ServiceConnection接口onServiceConnected方法中的第2个参数是一个IBinder类型的变量,将该参数转换成MyService.MyBinder对象,并使用MyBinder类中的getService方法获得MyService对象。在获得MyService对象后,就可以在Activity中随意操作MyService类了

 

 

注意事项

 

1)两者请不要混用,否则容易出现Service没被Destroy的情况。

 

如startService后再bindService,此时退出Activity之后unbindService,不会destroy

 

2)确保有bindService就有unBindService(绑定的会在退出时自动unbind),有startService就有stopService