Service(一)
在Service的生命周期里,常用的有:
可以发现 service的启动方式有两种:startService和bindService
一、 以只使用startService()启动服务为例:
当第一次调用startService:
日志如下:
再次调用startService
日志如下:
调用stopService
日志如下:
小结:
startService()
stopService()
- 如果在程序中调用:context.stopService()会触发执行Service生命周期中的onDestroy()回调方法,会让服务停止;
- stopService()的时候直接onDestroy,如果是调用者自己直接退出而没有调用stopService()的话,Service会一直在后台运行。该Service的调用者再启动该Service后可以通过stopService关闭Service;stopSelf()
所以StartService的生命周期为:onCreate --> onStartCommand(可多次调用) --> onDestroy。
二、只使用BindService绑定服务为例:
第一次调用BindeService:
再次调用BindService,不执行任何方法
调用unbindSercice()方法时:
小结:
只使用BindService绑定服务的生命周期
- 在程序中调用:context.bindService()会触发执行Service生命周期中的onCreate()、onBind()回调方法,此时服务开始运行;
- onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。此后调用者(Context,例如Activity)会和Service绑定在一起;
- 如果调用Service的调用者Context退出了,那么会依次调用Service生命周期中的onUnbind()、onDestroy()回调方法,会让服务停止;
- 所以BindService的生命周期为:onCreate --> onBind(只一次,不可多次绑定) --> onUnbind --> onDestory。
注意: