一张图解决Service的生命周期问题

本文解析了Android中Service的五种可能状态及其转换过程,通过bindService和startService操作间的耦合性,阐述了如何理解Service的不同生命周期状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官网上的那张生命周期图 我觉得不完整 因为客户端(一般是Activity)的调用方式 bindService & startService两者之间在生命周期上是有很强的耦合性的。理解它们的时候 就将bindService理解为双向绑定,startService理解为有客户端开启了一个服务独立存在,还有另一些解绑操作unbindService,stopService那么这些操作反应到生命周期上是什么样子呢?首先见下图,此图是Service可能遇到的5种状态。用系统模型思考,这6种状态的相互转换时通过前面四种操作得到的

image

举个例子用 xxx -> onStartCommand -> unBind, 对应的操作模式是
- startService -> (xxx -> onStartCommand)
- bindService -> (onBind)
- unBindService -> (unbind).
式例如下图

image

但是其中有一点需要说明的是 xxx这个状态取决于第几次调用startService, 第一次为onCreate否则为空,而onStartCommand-> unBind状态不可能直接调用unBindService,这里面有些约束 这算基础知识就不解释了。在unBind后,也有两种情况,在这里因为之前调用过startService相当于给Service设置了一个flag = “可独立存在”。所以在unBind后,如果状态想变化到onDestroy则还需要调用stopService. 其它情况也可以类似分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值