Managing the Lifecycle of a Bound Service

原文URL:Managing the Lifecycle of a Bound Service

Managing the Lifecycle of a Bound Service_第1张图片

Bound Service的生命周期管理

当一个service与所有的client解除绑定关系后,Android 系统会销毁它(除非该Service也是用onStartCommand()方法启动的)。所以,如果你的service仅仅只是一个绑定service的话,你不必去管理它的生命周期,因为Android系统会基于它是否绑定了客户端来替你管理它。


然而,如果你重写onStartCommand()回调方法,那么你必须显示的停止该service ,因为该service被系统认为是用onStartCommand()方法启动的。这种情况下,不管该service 是否绑定有任何client,该service 会一直运行到调用stopSelf()方法终止它自己或者其他的组件调用stopService()方法终止它为止。


另外,如果你的service是被启动的,并且接受绑定,当系统调用你的onUnbind()方法时,如果你想下次当一个client绑定到该service时调用onRebind()方法(而不是调用onBind()方法),你可以在onUnbind()方法中选择返回true。onRebind()返回void,但是client仍然可以在它的onServiceConnected()方法中接收到IBinder对象。下图表明了这种生命周期逻辑。

Managing the Lifecycle of a Bound Service_第2张图片

Figure 1. The lifecycle for a service that is started and also allows binding.

图1  一个被启动的并且可以接受绑定的Service 的生命周期


For more information about the lifecycle of a started service, see theServices document.

你可能感兴趣的:(service,lifecycle,bound)