android复习路之不死的service

如何保证Service不死:

1.onStartCommand方法中返回START_STICKY。在运行onStartCommand后Service被进程Kill之后,服务会尝试再次创建,因为保留在开始状态,服务会调用onStartCommand()。如果没有任何参数传递给Service,那么将会获得一个null的intent。返回START_STICKY如果有未完成的启动服务 的intent未发送完,后续的intent会继续发送。不执行命令但是需要一直待命。

2.提升service的优先级,在AndroidManifest.xml文件中对于intent-filter可以通过android:property="1000"来设定服务的优先级,优先级越高月不容易杀死。

3,提高service的进程优先级,android中的进程是托管的如果当前系统内存不足的时候,会根据优先级kill一些。android中的进程分为6个级别,前台进程(FOREGROUND_APP),可视进程(VISIBLE_APP) ,次要服务进程(SECONADRY_SERVICE),后台进程(HIDDEN_APP),内容提供者节点(CONTEXT_PROVIDER),空进程(EMPTY_APP)。在onStartCommand中使用startForegrount()将服务放到前台进程进行运行,这样被kill的机率会变低,但是极低内存下还是会被kill。在onDestory()中要stopForeground(true)。

4.在onDestory方法中重启service。第一种在onDestory中直接startService,或者是service+broadcast,就是当service走到onDestory的时候发送一个自定广播接收到后重启。

5.可以监听系统广播进行判断我们自己的广播是否还活着。

IentService:

intentService是Service的子类,它的特点是会独自创立一个worker线程来处理所有的intent,会创建独立的worker线程来处理onHanderIntend()方法实现的代码,无需处理多线程问题,所有的请求完成后IntentService会自动停止。使用IntentService实现两个方法1.构造函数IntentService调用super("name")。重写onHandleIntent()。根据intent去处理utong的事物。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值