AccuBattery 被系统杀后台——怎么办
症状
你充了一整晚电,第二天打开 AccuBattery 发现:
- 充电会话数据只记录到凌晨 2 点,后面的全没了
- 健康 Tab 少了一个本应该有的数据点
- 历史 Tab 里那次会话不完整
原因:Android 在你长时间充电的过程中,杀掉了 AccuBattery 的后台进程。
为什么会被杀
Android 原生机制
从 Android 6.0(Marshmallow)开始的 Doze 机制:
- 屏幕关闭后,Android 进入 Doze 模式
- Doze 模式下,后台 App 会被限制 CPU 和网络资源
- 如果电池水位紧张,Android 甚至会主动杀掉后台进程
厂商定制 ROM 的额外限制
国内厂商(小米、OPPO、vivo、华为等)在 Doze 基础上又加了自家的后台限制策略,通常比原生 Android 更激进:
- MIUI 有「后台应用限制」
- ColorOS 有「深度休眠」
- OriginOS 有「后台清理」
- EMUI 有「省电策略」
这些策略的默认设置通常会把 AccuBattery 当作「普通后台 App」处理,而它需要长时间在后台持续读取电池电流。
解决方法
1. 系统电池优化里把 AccuBattery 设为「不优化」
这是最基础也最重要的一步。不同品牌路径:
| 品牌 | 路径 |
|---|---|
| 原生 / Pixel | 设置 → 电池 → 电池优化 → 找到 AccuBattery → 设为「不优化」 |
| Samsung | 设置 → 电池和设备维护 → 电池 → 后台使用限制 → AccuBattery → 不限制 |
| 小米 | 设置 → 电池与性能 → 省电策略 → App 省电策略 → AccuBattery → 无限制 |
| OPPO | 设置 → 电池 → 应用冻结与休眠 → AccuBattery → 允许后台运行 |
| 华为 | 设置 → 电池 → 启动管理 → AccuBattery → 不允许手动管理 → 三个开关全关 |
2. 锁定后台
最近任务界面里,把 AccuBattery 卡片下拉或点菜单里的「锁定」。锁定后 Android 不会主动清理它。
3. 手动基准测试时用悬浮窗保活
Premium 会员可以在做基准测试时打开任意一种悬浮窗——Android 有悬浮窗的 App 通常不会被杀,这是个临时 workaround:
"Most phones will not kill an app when it's running an overlay so if your phone sometimes kills our app and breaks off our session data this may help."
如果以上都做了还被杀
有些定制 ROM 实在太激进。最后一招:手动基准测试时保持屏幕微亮(比如放着播放一个亮度极低的白噪音视频)——Doze 机制在屏幕亮着的时候不会触发。
为什么 AccuBattery 不自动保活
AccuBattery 团队不想做也不应该做主动保活:
- 主动保活需要持续持 wake lock,会增加电池消耗——一个电池监测 App 反而让电池更费电,这不合理
- 原生 Android 限制了后台行为,AccuBattery 作为一个在 Google Play 上公开上架的 App 必须遵守规则
- 厂商定制 ROM 的限制千奇百怪,AccuBattery 没法为每个品牌写适配
团队的态度是:把不杀后台的选择权交给用户——如果你觉得 AccuBattery 重要,就在系统设置里给它特权。
影响评估
- 偶尔一次被杀:会话数据断了,少一个散点。不影响整体趋势
- 经常被杀:健康 Tab 的散点图稀疏,模型不准。必须按上面的方法设置
- 手动基准测试时被杀:那次测试白做了,得重来