NoActive 冻结方式怎么选:API、V2、V1、KILL 按内核对号入座
NoActive 提供 API、V2、V1、KILL 四种冻结方式,选错方式是「装了没效果」的头号原因。本篇把四种方式的机制、适合的机型与各自的坑摆在一起,给你一条按内核选的路。相关文档:装完没效果怎么排查.md · 白名单与冻结开关设置.md
一、先给结论
- 内核够新的机器(5.0 及以上):选 V2 或 API,公开教程普遍首推 V2。
- 4.19 内核的小米系(MIUI / HyperOS / RealmeUI / ColorOS):选 V1。
- 其他 4.19 及以下内核:选 KILL 兜底。
- 判断依据只有一条:你的内核支持哪种,以及实测哪种能把应用真的冻结住。同一台机器上把几种方式各试一遍,哪个能冻住用哪个。
二、四种方式对照
| 方式 | 机制一句话 | 适合谁 | 要注意的坑 |
|---|---|---|---|
| API | 调用系统自带「暂停执行已缓存」的接口,按内核支持自动处理 | 内核新、不想折腾的机器 | 项目页自己标注「API 存在不可控性」,行为随系统版本变化 |
| V2 | Cgroup Freezer V2,谷歌原生的后台冻结机制 | 内核 5.0 及以上(部分厂商把它移植到了 4.19) | 兼容性好、效果统一 |
| V1 | Cgroup Freezer V1 | 4.19 内核的 MIUI / HyperOS / RealmeUI / ColorOS | 非 MIUI 设备曾有内存泄露问题;3.2 起加了防泄露补丁降低影响 |
| KILL | 用信号方式处理进程 | 任何内核都能用,最后的兜底 | 内存吃紧时系统可能把冻结的进程整体解冻;进程仍存在,回到前台可能重载 |
KILL 的两个坑是机制自带的:它是「信号」而非「冻结器」,内存压力一大系统就把进程放出来;放出来后应用回前台就可能重载。能用 Freezer(V2 / V1)就用 Freezer。
另外按用户社区反馈,有的版本会把 KILL 细分成 KILL19 / KILL20 两档,或者多一档「自动」让系统自己识别——分档只是信号取值不同,哪个实际能冻住就用哪个;「自动」档有识别出错的反馈,选了它没效果时记得手动指定。
三、切换方法与验证
- 打开 NoActive,进右上角设置,找到「冻结方式」。
- 选定后回到「运行列表」:开一个应用再退到桌面,看它是否显示「已冻结」。
- 刚切换完不生效,先重启一次再看。
- 还是全都没被冻结 → 按 装完没效果怎么排查.md 的五步路径走一遍。
四、都不生效时的兜底
- 提权模式:部分机型的系统框架没有权限读写 Freezer 目录,这类机器可以在设置里开启提权模式再试。
- 冻结日志报 error:直接换 KILL 方式试。
- Kill -19 + 放行 SELinux 策略:开发者仓库给出的最后手段——把冻结方式切到 Kill -19,然后每次开机后执行一次下面两条命令:
su
magiskpolicy --live "allow system_server * process {sigstop}"
这条命令的效果重启后不保留,每次开机都要重新执行;嫌麻烦可以写进开机脚本,具体做法按你用的 Root 管理器查。
选定方式、验证生效之后,该白名单的白名单、该后台播放的后台播放,按应用类型的搭配见 白名单与冻结开关设置.md;想了解模块整体的能力面,可以逛逛 NoActive 功能说明站。