电池优化与 Doze 模式:防止 NetGuard 被系统强制停止
为什么要关注电池优化
Android 6.0+ 引入的 Doze 模式和应用电池优化(App Standby)会在设备长时间不活跃时强制停止后台运行的应用。对 NetGuard 来说这意味着:
- 防火墙可能被系统意外停止 → 所有应用恢复无拦截联网
- 新的 Wi-Fi / 移动切换、亮灭屏等状态变化时防火墙规则不会自动重载
- 你在 NetGuard 里配置的应用级开关暂时不生效
症状
如果遇到以下情况,很可能是 NetGuard 被电池优化影响了:
- 防火墙开关保持开启状态但拦截规则不生效(被禁止的应用仍能联网)
- 重启设备后防火墙不会自动恢复(RECEIVE_BOOT_COMPLETED 广播被阻止)
- 屏幕熄灭一段时间后,某些被禁止的应用开始偷偷联网
- 防火墙状态通知消失,打开 NetGuard 才发现它已经停止
解决方法:关闭电池优化
方法一:Android 系统设置(通用)
- 设置 → 电池 → 电池使用情况
- 或:设置 → 应用和通知 → 应用信息 → NetGuard → 电池
- 找到「电池优化」「后台限制」或类似选项
- 改为「不限制」「不优化」或「允许后台活动」
不同 ROM 的路径可能不同,核心是找到"电池优化白名单"并把 NetGuard 加进去。
方法二:NetGuard 内快捷入口
主菜单 → 设置 → 会有一个「电池优化」相关的入口(不同版本位置略有差异)→ 点击跳转到 Android 系统的电池优化页面 → 把 NetGuard 设为不优化。
国产 ROM 特殊处理
国产 Android ROM(MIUI、HyperOS、ColorOS、One UI、OPPO UI 等)对后台的管控比原生 Android 更激进,需要额外做两步:
MIUI / HyperOS
- 设置 → 应用设置 → 应用管理 → NetGuard → 省电策略 → 无限制
- 设置 → 应用设置 → 自启动 → 找到 NetGuard → 开启自启动开关
- 如果在「自启动」里找不到 NetGuard → 在 NetGuard 应用设置里找到「允许自启动」权限并开启
OPPO / Realme
- 设置 → 电池 → 应用冻结 → NetGuard → 设为不冻结
- 设置 → 应用管理 → NetGuard → 允许后台活动 → 开启
华为 / Honor
- 设置 → 电池 → 启动管理 → NetGuard → 手动管理 → 允许自启动 + 允许关联启动 + 允许后台活动
- 如果找不到「启动管理」→ 进入应用详情页面,找「受保护应用」开关 → 开启
三星 One UI
- 设置 → 电池和设备维护 → 电池 → 后台限制 → NetGuard → 不限制
- 设置 → 应用 → NetGuard → 电池 → 后台使用 → 不受限制
Doze 模式的原理
Android 6.0+ 的 Doze 模式分两个阶段:
| 阶段 | 触发条件 | 效果 |
|---|---|---|
| 轻度 Doze | 设备静止后几小时 | 延迟后台网络访问、暂停 Doze 白名单外的应用 |
| 深度 Doze | 静止超过一天 | 几乎暂停所有后台活动 |
NetGuard 是前台服务(Foreground Service),理论上 Doze 应该不会影响前台服务。但国产 ROM 的定制实现往往绕过这个机制,直接强制停止后台"看似空闲"的应用——包括带前台服务的。
关闭 Doze 后 NetGuard 会更耗电吗
关闭电池优化后,NetGuard 确实会保持持续运行状态,理论上比被 Doze 暂停时更耗电。但:
- 默认不启用流量过滤时,NetGuard 的电池消耗极低——它只是维持 VPN 隧道,不做任何 IP 检查
- 启用流量过滤时,电池消耗略有增加,但远低于被 NetGuard 拦截的那些广告 SDK 后台消耗的流量和电量
- FAQ 提到:Android 统计的"NetGuard 高电池 / 数据使用"很多时候是其他应用的消耗被错误归因到 NetGuard(因为它们的流量都流经 NetGuard)
NetGuard 自带的 Watchdog
在高级选项里,NetGuard 提供了一个「Watchdog」功能——每隔 10~15 分钟(可配置)检查一次自己的运行状态,如果被系统杀死了就自动重启。
主菜单 → 设置 → 高级选项 → ✅ Watchdog。
这个机制在国产 ROM 上特别有用——即使 ROM 把 NetGuard 杀了,10 分钟内它会自动恢复。但要注意:Watchdog 检查期间防火墙是停摆的,应用可能在这段窗口里偷偷联网。
验证修复成功
做完以上所有设置后:
- 重启设备
- 打开 NetGuard → 防火墙开关
- 强行停止几个被你禁止联网的应用
- 锁屏静置 30 分钟
- 解锁后打开那些被禁止的应用 → 确认它们仍然无法联网
如果仍然能联网,回到国产 ROM 后台管理页面重新检查——很可能某个权限(自启动、关联启动、后台活动)没开全。