公司的产品要求在程序被杀死后,程序的服务依然存活(像今日头条,腾讯新闻被杀死后后台服务依然存在,无法杀死),听到这个需求这也是好多的羊驼再奔腾,最开始想法很简单,就是服务死后怎么被唤醒,
最先使用了 监听系统广播的方法,来唤醒挂掉的服务,发现静态监听不到。因为好多系统广播已经不支持静态注册。
后来在上网上查找相关资料,发现了一个至今还有效的方法那就是双进程守护。
双进程守护的实现:来利用cpu 执行处理杀死进程的时间间隔,也就是两个进程相互监听,一个进程挂了,另一个进程接收到后重新启动挂掉的进程,反之一样。那么
如何进行双进程守护
- 在app中开启两个进程:在清单文件中开启一个新的进程,
- 两个进程之间建立联系 :aidl ,bindService
- 监听两个进程的异常断开(如被杀死,别一键清理软件清理,手动停止):ServiceConnection
那么下面,贴一下 代码
AndroidManifest.xml
|
|
aidl 用于两个进程之间的交互
|
|
|
|
service2
|
|
这样只要不是同一时间杀死两个进程,那么进程就会复活,但有的手机可以杀死进程组(如华为手机)那么可以用jobService.
这里有一篇jobService介绍用法
Android5.0之后用JobService可以进行保护
JobScheduleService
|
|