2019年做的一个500元价位内手机后台定时查杀的功能策略,现在2025年了回过头看,确实已经不适用了。现在进程管控大部分是不杀进程的方式了,类似冻结(类似苹果的墓碑机制),而杀进程策略主要是场景式异常查杀了,例如明显性能卡顿、cpu高负载异常或功耗异常、温升异常才执行查杀或者内存水位策略回收了。
具体使用 JobScheduler 定时灭屏 5~6 分钟后,获取应用正在运行的列表,先检查哪些规则不能被杀后,再执行forceStop和关联启动拦截。其实本质是可感知或重要进程不杀,其余查杀。实际上这种查杀策略还是比较一刀切和粗暴。
1. 不杀系统应用
2. 不杀自启动白名单应用(例如超级应用微信等)
3. 不杀无桌面图标应用
4. 不杀应用分类 MAILBOX、MESSAGING、VOIP
MAILBOX 类型应用
5. 不杀一周内超过4天处于前台进程的应用
6. 不杀今日处于前台进程次数超过5次的应用
7. 不杀当前运行的应用
8. 不杀 IMPORTANCE_FOREGROUND 进程,即正在运行前台UI
9. 不杀 IMPORTANCE_FOREGROUND_SERVICE 进程,即正在运行前台服务,即使用户不是在应用中时也执行音乐播放,这一般表示该进程正在做用户积极关心的事情
10. 不杀 IMPORTANCE_FOREGROUND_SERVICE 进程,即这个过程不是用户的直接意识到,但在某种程度上是他们可以察觉的
11. 不杀 IMPORTANCE_PERCEPTIBLE 进程,即这个过程不是用户的直接意识到,但在某种程度上是他们可以察觉的
12. 不杀 IMPORTANCE_TOP_SLEEPING 进程,即此进程正在运行前台UI,但设备处于睡眠状态,因此用户不可见,意思是用户意识不到的进程,因为他们看不到或与它交互,但它是相当重要,因为用户解锁设备时期望的返回到这个进程
13. 不杀 IMPORTANCE_CANT_SAVE_STATE,即进程在后台,但我们不能恢复它的状态,所以我们想尽量避免杀死它,不然这个而进程就丢了
14. 不杀 IMPORTANCE_VISIBLE,即此进程正在运行某些对用户主动可见的内容,但不是直接显示在UI,这可能运行在当前前台之后的窗口(因此暂停并且其状态被保存,不与用户交互,但在某种程度上对他们可见),也可能在系统的控制下运行其他服务
15. 不杀使用桌面小部件的应用
16. 不杀应用正在使用BindService的应用
从实践角度看,早期方案面向的是给北美500元内的手机,由于CPU和内存局限性,还是适合进程查杀这种性能立竿见影的效果。到了现在很多手机机器CPU和内存已经不错的情况,应用的后台存活率和内存管控空间的优化空间就比较大,很多进程管理和内存优化的技术层出不穷。查杀策略慢慢非必要不查杀的兜底方案了哈。