随着应用程序启动 Service方式的不同,Service生命周期也略有差异.
如果应用程序通过 startService( )方法来启动service,service的生命周期如下图.左边所示.
如果应用程序通过 bindService( )方法来启动service,service的生命周期如下图.右边所示.
服务生命周期。左边的图显示了生命周期服务时创建startservice()和右边的图显示了生命周期服务时创建bindservice()
Service 生命周期还有一种特殊的情形,如果Service已由某个客户端通过startService() 方法启动了,接下来其他客户端再调用 bindService()方法来绑定该Service后,再调用unbindService()方法来解除绑定,最后又调用了bindService()方法,再次绑定到Service.这个过程触发的生命周期方法如下:
onCreate( ) –> onStartCommand() –> onBind –>onUnbind()[重写该方法时返回了true] –> onRebind
在上面的触发过程中, onCreate( ) 是创建该Service后立即调用,只有当该Service被创建时才会被调用; onStartCommand() 方法则有客户端调用 startService()方法时触发调用的.