要提升APP存活率,最好的方案是做好产品,而不是做流氓APP, 尊重用户,尊重Android,自我规范化,去提升用户体验才是正道。
一直以来,Android有各种各样的方案实现后台保活,但是随着Android的逐渐规范化,实现方案一直在变化
双进程守护 Service互相唤醒 (MarsDaemon 库,Android5.0+废了,系统回收改成杀进程组而不是进程)
广播拉活 (Android7.0限制了广播,Android8.0进一步限制静态广播,需要动态注册,基本也废了)
监听到锁屏广播后使用1像素Activity提升优先级 (设置 android:excludeFromRecents="true"
和 singleInstance) (广播拉活的一种)
在后台播放无声音乐 (缺点 Android8+ 前台服务通知栏不能关闭) (广播拉活的一种)
STICK 前台服务,提升优先级 (8.0+不能去掉常驻通知栏,4.3前传入一个什么都没有的Notification对象,8.0前另起一个相同通知ID的服务来关闭前台服务的常驻通知) (国产 ROM 可能需要自启动权限)
各种推送服务唤醒: 各厂商推送,或友盟极光等多平台集成的方案
账户同步 (用户关闭系统同步开关时不可用) (国产 ROM 可能需要自启动权限)
任务调度 JobScheduler 唤醒 自己的 Service (7.0+ 失效?) (国产 ROM 可能需要自启动权限)
WorkManager (利用系统的任务队列强制拉活) (国产 ROM 可能需要自启动权限)
WakefulBroadcastReceiver 广播唤醒 startWakefulService 启动 Service
引导用户开启 PowerManager 系统服务的唤醒锁定 Wake Lock (使 CPU 保持运行状态)
引导用户开启忽略 电池优化
使用自定义锁屏 (网易云)
引导用户在多任务列表窗口加锁 (锁定后清理不被杀)
多任务列表窗口隐藏App (设置 android:excludeFromRecents="true"
,感觉比较流氓)
无障碍服务 (高优先级Service)
自启动/白名单
厂商白名单 (给厂商打钱,或自己有资本让厂商主动加白名单如微信)
厂商定制功能:小米神隐模式/省电策略,Vivo后台高耗电,。。。
针对 root 用户,让用户把 apk 放到 priv/system/app/ 变成系统应用
守护进程进阶版 (Leoric https://github.com/tiann/Leoric) (高版本可能无效)(国产 ROM 可能需要自启动权限)
未知方案 (应用宝 疑似JobScheduler无限执行+被其它APP拉起 据说5、6种方案一起用)
(Demo 实测: MI6 基于 Android 8.0 的 MIUI 10 永生, Mi10Ultra 基于 Android 10 的 MIUI 12.0 + 无效)
源码 https://github.com/tiann/Leoric
force-stop 杀进程的对抗
实现原理:
Android 黑科技保活实现原理揭秘 https://weishu.me/2020/01/16/a-keep-alive-method-on-android/
深度剖析App保活案例 http://gityuan.com/2018/02/24/process-keep-forever/
http://www.hzhcontrols.com/new-637667.html
https://juejin.cn/post/7003992225575075876