- Activity 1像素保活
- 前台服务保活
- 账户同步拉活
- JobScheduler 拉活
- 双进程守护
Activity 1像素保活
原理:通过监听手机息屏、开屏广播,关闭屏幕时,偷偷创建一个1像素的Activity,让应用成为前台进程;打开屏幕时,关闭该Activity。
缺点:存在一个Activity不够干净,同时需要在锁屏后才能提权。
前台 Service 保活
原理:启动一个前台服务,从而拉高整个应用的优先级。
- API<18,通知图标不会显示
- API>=18并且API<26,可以启动双服务,绑定同样的ID,然后stop一个服务,通知图标将不显示
- API>=26后,暂时没有方式能够隐藏通知
账户同步拉活
优点:系统唤醒,比较稳定
缺点:时间不能把控
JobScheduler 拉活
- JobScheduler允许在特定状态与特定时间间隔周期执行任务。可以利用它的这个特点完成保活的功能,效果即开启一个定时器,与普通定时器不同的是其调度由系统完成。
- 在某些ROM可能并不能达到需要的效果。
双进程守护
原理:开启两个进程相互绑定,一个进程被杀死后,另一个进程重新启动被杀死的进程。
总结:
- 没有一种方式是能够保证你的应用一直存活在内存中的,但是能延长时间也很不错了。(应用加入厂商手机白名单最一劳永逸!!!)
- 系统会优先杀死占用内存多的应用,所以想让自己的应用活的更久,还可以从性能上去优化,让其尽可能少的占用内存。