关于服务的有效关闭

服务有2种启动方式:bindService和startService。

1,bindService启动之后,会和启动它的应用一同结束:即应用被杀,服务就一同被杀。

2,startService启动之后,一般需要主动stopService,否则该服务会一直运行。如果服务进程被杀,系统会根据需要,错开各服务的重新启动时间,拉起各进程。

在完成服务之后,要主动stopSelf。或由应用监测,及时调用stopService停止服务。

3另外:服务还没启动时调用startService,系统会回调onStartCommand。如果此时return START_STICKY,该服务需要主动停止服务。系统默认也是返回此值。但如果return START_NOT_STICKY,该服务并不需要主动停止,会随启动它的应用一同被杀。

 

public int onStartCommand(Intent intent, int flags, int startId) {

         return START_NOT_STICKY;
};

 

关于是否返回START_NOT_STICKY,可以adb shell dumpsys >dumpsys.txt日志中搜索“stopIfKilled”字串,看是否等于true,可能就是返回了START_NOT_STICKY。

另外记得bindService和unbindService成对出现,startService和stopService成对出现哦。

 

 

文件拷贝、网络下载、播放音乐最好开一个服务去进行。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值