Android开发笔记(四十一)Service的生命周期

本文详细探讨了Android Service的生命周期,包括单独启动与停止服务、绑定服务的不同场景,以及IntentService的使用。通过实例分析了Service的启动、运行、停止过程,并阐述了外部与内部如何控制Service的生命周期。同时,还讲解了如何通过日志观察Service的状态变化。

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

与生命周期有关的方法

onCreate : 创建服务
onStart : 开始服务,Android2.0以下版本使用
onStartCommand : 开始服务,Android2.0及以上版本使用。该函数返回值为整型,一般取值START_STICKY,具体说明如下:
1、START_STICKY:粘性的服务。如果服务进程被杀掉,保留服务的状态为开始状态,但不保留传送的Intent对象。随后系统会尝试重新创建服务,由于服务状态为开始状态,所以创建服务后一定会调用onStartCommand方法。如果在此期间没有任何启动命令送给服务,那么参数Intent将为空值。
2、START_NOT_STICKY:非粘性的服务。使用这个返回值时,如果服务被异常杀掉,系统不会自动重启该服务。
3、START_REDELIVER_INTENT:重传Intent的服务。使用这个返回值时,如果服务被异常杀掉,系统会自动重启该服务,并传入Intent的原值。
4、START_STICKY_COMPATIBILITY:START_STICKY的兼容版本,但不保证服务被杀掉后一定能重启。
onDestroy : 销毁服务
onBind : 绑定服务
onRebind : 重新绑定。该方法只有当onUnbind返回true的时候才会被调用
onUnbind : 解除绑定。返回值true表示希望以后再绑定时能够调用onRebind方法,false表示再绑定时不调用onRebind方法

最简单的服务启动顺序:onCreate->onStartCommand
最简单的服务退出顺序:onDestroy



Service的生命周期流程

单独启停服务

启动服务,方法调用顺序为:onCreate->onStartCommand。日志如下:
01-06 17:25:14.309: D/FirstService(1604): onCreate
01-06 17:25:14.309: D/FirstService(1604): onStartCommand


停止服务,方法调用顺序为:onDestroy。日志如下:
01-06 17:25:30.485: D/FirstService(1604): onDestroy


已启动的服务再次启动,方法调用顺序为:onStartCommand。日志如下:
01-06 17:25:47.097: D/FirstService(1604): onStartCommand


单独绑定服务

直接绑定服务,方法调用顺序为:onCreate->onBind。日志如下:
01-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值