Android Service (服务)
经过前两章节的学习,我们知道了启动 Service 有两种方式 startService()
和 bindService()
其实,还可以先调用 startService()
然后再 bindService()
的
startService() 启动 Service 后 bindService() 绑定
如果 Service 已经由某个客户端通过 startService()
启动,接下来由其它客户端
再调用 bindService()
绑定到该 Service 后调用 unbindService()
解除绑定,最后在
调用 bindService()
绑定到 Service 的话,此时所触发的生命周期方法如下
onCreate() -> onStartCommand() -> onBind() -> onUnbind() -> onRebind()
前提是 onUnbind()
方法返回 true
或许部分读者有疑惑了,调用了 unbindService
后 Service
不是应该调用 onDistory()
方法么
这是因为这个 Service 是由我们的 startService()
来启动的
,所以调用 onUnbind()
方法取消绑定,Service 也是不会终止的
假如我们使用 bindService()
来绑定一个已启动的 Service, 注意是已经启动的 Service
系统只是将 Service 的内部 IBinder 对象传递给 Activity
,并不会将 Service 的生命周期
与 Activity 绑定,因此调用 unBindService()
方法取消绑定时,Service 也不会被销毁