03.app保活解决方案
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了03.app保活解决方案相关的知识,希望对你有一定的参考价值。
参考技术A 最近针对我们项目中app经常收不到推送的问题作了一些处理,增加app的保活管理。我们知道当安卓进程退到后台之后,很容易被系统杀死,这个时候推送消息一般都是收不到的。我也观察了一些比较主流的app,像同花顺,钉钉,甚至是支付宝我都很少在后台收到过消息,尤其是支付宝计步功能老是不准,很有可能就是这种问题导致的当然没有百分之百可以实现保活的解决方案,即便是从ndk层面去进行,但至少我们要尽一些努力,我采用的是双进程守护+1像素Activity的实现方式
开启两个service,分别在两个进程中运行,启动一个service时,通过aidl的方式将它和另一个service绑定在一起,当其中一个service被杀掉的时候,另一个service中重新将它启动
service1启动绑定service2
service1和service2的链接断开时,说明service2被杀死,这时重新绑定
service2绑定service1的逻辑同上
这样一来,基本上在一定程度上可以保证app常驻内存了,保险起见,我们再加一层保护,创建两个JobService
分别位于上边两个进程中(安卓5.0以上适用),开启一个轮巡任务不断的检查service存活情况,如果不在了,启动它,注意JobService需要权限
监听系统锁屏消息,在屏幕锁定的时候开启一个Activity,这个Activity只有一个像素大小,当屏幕开启的时候再关闭这个Activity,达到app一直位于前台进程的目的,提高进程的优先级,降低系统杀死app的概率,在这个Activity启动时设置app只有一个像素大小,既可以减少占用空间,也可以防止开锁屏期间被用户发现这个奇怪的页面
在androidManifest中配置
GuardService1
GuardService2
JobWakeUpService1
JobWakeUpService2
DaemonActivity
AndroidManifest配置
增加一个管理类GuardAppManager一键启动和关闭
开启守护
关闭守护
以上是关于03.app保活解决方案的主要内容,如果未能解决你的问题,请参考以下文章