- 完整的生命周期
官网上的那张生命周期图 我觉得不完整 因为客户端(一般是
Activity
)的调用方式bindService
&startService
两者之间在生命周期上是有很强的耦合性的。理解它们的时候 就将bindService
理解为双向绑定,startService
理解为有客户端开启了一个服务独立存在,还有另一些解绑操作unbindService
,stopService
那么这些操作反应到生命周期上是什么样子呢?首先见下图,此图是Service可能遇到的5种状态。用系统模型思考,这6种状态的相互转换时通过前面四种操作得到的
举个例子用
xxx
->onStartCommand
->unBind
, 对应的操作模式是
-
startService
-> (xxx
->onStartCommand
) -
bindService
-> (onBind
) -
unBindService
-> (unbind
).
式例如下图
但是其中有一点需要说明的是 xxx
这个状态取决于第几次调用startService
, 第一次为onCreate
否则为空,而onStartCommand
-> unBind
状态不可能直接调用unBindService
,这里面有些约束 这算基础知识就不解释了。在unBind
后,也有两种情况,在这里因为之前调用过startService
相当于给Service
设置了一个flag = "可独立存在"。所以在unBind
后,如果状态想变化到onDestroy
则还需要调用stopService
. 其它情况也可以类似分析