Android 上的 Clash 客户端通常通过系统 VPN 接口接管流量。状态栏出现钥匙图标后,应用需要持续处理连接、DNS 查询和规则匹配,因此电量记录里长期显示后台活动是正常现象。真正需要排查的是异常增量:待机一小时下降 5% 以上、机身持续发热、夜间八小时掉电超过 15%,或者应用在网络切换后反复重启。
耗电也不能只看系统电池列表中的应用占比。假设一段时间总共只消耗 4% 电量,Clash 占其中 30%,实际消耗约为 1.2 个百分点;如果总耗电达到 25%,同样的占比才值得优先处理。排查前先记录总电量、屏幕使用时间、网络类型和测试时长,再逐项修改设置。
先判断耗电来自客户端还是网络环境
用三组测试拆开问题
最有效的方法不是立刻重装,而是做三组条件一致的对照测试。每组至少持续 45 至 60 分钟,并保持屏幕亮度、网络和前台应用相同。
- 关闭 Clash:记录系统基础耗电,确认移动信号、Wi-Fi 和其他应用本身是否异常。
- 开启 Clash,但保持待机:不播放视频,不执行测速,只观察 VPN 常驻后的增量。
- 开启 Clash 并正常使用:浏览网页、收发消息或播放固定清晰度的视频,观察高流量场景。
例如,关闭 Clash 时每小时下降 1.5%,开启后待机下降 2.2%,差值 0.7 个百分点通常可以接受。若开启后达到每小时 6%,同时机身温度由 30℃升到 38℃,就应检查延迟测试、连接重试、日志和 DNS。移动数据信号只有一至两格时,基带会提高发射功率,此时即使关闭代理也可能明显耗电。
查看 Android 电池记录
原生 Android 和 Pixel 可进入「设置」→「电池」→「电池用量」,点开客户端查看前台与后台时间。部分系统按最近 24 小时统计,部分系统按上次充满电统计,比较数据时必须使用同一统计周期。
- 后台时间长,但每小时电量变化低:通常是 VPN 服务正常常驻。
- 后台时间长,CPU 活动与温度同时上升:优先检查测速、日志和重连。
- Clash 占比不高,但“移动网络待机”很高:先处理信号覆盖问题。
- 屏幕关闭后连接频繁中断:通常与厂商后台限制有关,不一定是内核持续高负载。
延迟测速频率与代理组检查
客户端的“自动测速”并不是一次性动作。URL-Test、Fallback 和 Load-Balance 组可以按固定间隔访问测试地址,以判断节点延迟或可用性。订阅里有 80 个节点,三个代理组都独立检查时,一轮可能产生上百次连接。间隔设置为 30 秒,就会在待机期间持续唤醒网络与 CPU。
把检查间隔调整到可用范围
日常移动场景可先使用 600 秒,即 10 分钟。网络变化不频繁时可提高到 900 秒。需要快速故障切换的 Fallback 组可保留 300 秒,但不建议让所有代理组都以 30 或 60 秒运行。手动点击“全部测速”也会集中建立连接,排查期间不要连续操作。
proxy-providers:
mobile-nodes:
type: http
url: https://example.invalid/subscription
interval: 86400
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 600
lazy: true
interval: 86400控制订阅提供器更新周期,单位为秒;健康检查中的interval: 600控制节点检测周期。两者用途不同。mihomo 支持的lazy: true可减少未使用提供器的主动检查,但客户端版本和配置格式必须支持该字段。
减少重复的自动选择组
检查配置中的多个 URL-Test 组是否包含同一批节点。若“自动选择”“流媒体自动”“下载自动”都覆盖全部节点,每组会维护自己的检测状态。移动端可以保留一个通用自动组,特殊服务使用固定节点或较长检测间隔。节点数量从 120 个缩减到常用的 15 至 30 个,也能降低每轮探测规模。
TUN 常驻与系统 VPN 开销
Android 客户端上的 TUN 通常建立在系统 VpnService 上。应用读取虚拟网卡数据包,再交给 mihomo 内核处理。相比只给单个应用设置 HTTP 代理,TUN 会覆盖更多应用和协议,因此后台服务需要持续存在。不过 Android 上多数 Clash 类客户端本来就依赖 VPN 接口,界面里的“TUN”开关含义可能随客户端实现不同,不能直接套用桌面端的系统代理概念。
先缩小需要接管的应用范围
若客户端提供“分应用代理”“应用代理”或“访问控制”,可只选择浏览器、聊天工具和需要代理的应用。银行、地图、相机同步、局域网投屏等明确直连的应用可以排除。这样既减少经过内核的连接,也能避免某些应用因检测到 VPN 后反复重试。
切换为白名单模式前,要确认系统组件是否依赖代理访问。应用商店、WebView 和下载管理器可能由独立系统进程发起连接。修改后应测试网页打开、文件下载、消息推送和应用更新,不能只看浏览器是否联网。
关闭不需要的持续功能
- 局域网共享:手机不作为其他设备的代理服务器时,关闭“允许局域网连接”。
- 外部控制器:不使用远程面板时,将控制器限制在
127.0.0.1:9090,不要监听所有网络接口。 - 流量面板刷新:排查期间退出实时连接页面。每秒刷新连接和速率会增加前台 CPU 活动。
- 详细日志:日常使用选择 warning 或 error。debug 日志适合短时定位,不适合整天开启。
- 热点共享:不使用手机热点代理时,关闭相关转发选项。
mixed-port: 7890
external-controller: 127.0.0.1:9090
log-level: warning
allow-lan: false
mixed-port: 7890只是本地 HTTP 与 SOCKS 混合端口,本身不会持续产生大量耗电。真正需要注意的是是否有其他应用不断访问端口,以及控制面板是否持续拉取连接数据。
规则、DNS 与嗅探怎么精简
规则数量并不等于同等比例的耗电。mihomo 会为规则建立索引,几万条域名规则在稳定运行后未必造成明显负载。更常见的问题是规则提供器频繁更新、配置反复重载、DNS 请求循环,或者嗅探与应用自身的加密 DNS 相互影响。
规则提供器按小时或按天更新
广告、流媒体和地区规则通常不需要每分钟更新。常用规则提供器可设为 43200 秒或 86400 秒。更新时客户端需要下载文件、解析内容并替换规则,若多个提供器同时以短周期更新,待机期间会出现规律性的 CPU 峰值。
rule-providers:
direct-list:
type: http
behavior: domain
format: mrs
interval: 86400
path: ./ruleset/direct.mrs
url: https://example.invalid/rules/direct.mrs
使用二进制规则格式可减少加载体积,但前提是规则源与当前 mihomo 版本兼容。若导入后出现规则加载失败,应恢复客户端支持的 YAML、text 或 mrs 格式,不能只改文件扩展名。
检查 DNS 循环与重复解析
当客户端 DNS 指向本机地址,而上游加密 DNS 又被错误地送回同一个本机端口时,可能形成查询循环。典型表现是日志连续出现 timeout、context deadline exceeded 或 exchange failed,手机待机时仍持续发热。先使用客户端默认 DNS 配置,再逐项加入自定义上游。
- 普通 DNS 常用端口为 53,DoT 常用端口为 853,DoH 通常走 443。
- Bootstrap DNS 应能直接解析 DoH 服务器域名,不能依赖尚未建立的代理链路。
- 一个稳定上游加一个备用上游通常足够,不必同时配置十余个服务器。
- 修改 Fake-IP、Redir-Host 或嗅探设置后,先清理旧连接并重启客户端。
域名嗅探可帮助内核识别部分连接对应的域名,使域名规则生效。但对不依赖嗅探的配置,扩大端口范围、覆盖所有协议并不一定有收益。若日志中反复出现 sniff failed,可先恢复客户端默认嗅探范围,再观察一小时耗电与规则命中情况。
厂商后台策略要避免反复拉起
很多“Clash 一开就费电”的情况,其实来自系统不断终止 VPN 服务,客户端随后又被“始终开启的 VPN”或自启动策略重新拉起。一次完整重启会重新载入配置、规则和 DNS 缓存。十几分钟循环一次,比稳定常驻更耗电,也会造成消息延迟和网页偶发断流。
原生 Android 与 Pixel
进入「设置」→「应用」→「查看所有应用」→选择客户端→「应用电池用量」,允许后台使用。若页面提供“优化”和“不受限制”,连接频繁断开时可先选“不受限制”测试一天。该选项可能略微增加驻留时间,但能避免反复终止与重启。
小米 HyperOS
常见路径为「设置」→「应用设置」→「应用管理」→选择客户端→「省电策略」→「无限制」。随后在应用详情或权限管理中检查“自启动”。最近任务界面的锁定只能降低被清理概率,不能替代后台策略设置。不同 HyperOS 版本的菜单文字可能略有变化。
OPPO、OnePlus 与 realme
ColorOS 系列通常可在「设置」→「应用」→「应用管理」→选择客户端→「耗电管理」中允许后台活动。还应检查「设置」→「电池」→「更多设置」中的睡眠待机优化。只在夜间断线时,优先测试睡眠相关选项。
三星 One UI
进入「设置」→「电池」→「后台使用限制」,确认客户端没有位于“深度休眠应用程序”列表。需要长期连接时,可加入“从不自动休眠的应用程序”。同时在「设置」→「连接」→「更多连接设置」→「VPN」中检查当前 VPN 配置。
系统 VPN 选项不要互相冲突
Android 的“始终开启的 VPN”适合要求代理持续工作的场景。“屏蔽未使用 VPN 的连接”则更严格:VPN 重启期间,所有网络都可能暂停。如果客户端本身不稳定,同时开启这两个选项会让断流表现更明显。排查阶段可先关闭严格屏蔽,只保留普通 VPN,确认连接稳定后再按需求恢复。
按顺序执行的省电设置清单
下面的顺序从风险低、收益明确的项目开始。每完成一项,至少观察 60 分钟;夜间耗电问题则需要完整测试 6 至 8 小时。
- 停止连续手动测速,自动健康检查改为 600 秒。
- 订阅更新周期改为 86400 秒,规则提供器改为 43200 或 86400 秒。
- 删除重复的自动选择组,将常用节点控制在 15 至 30 个。
- 把日志级别从 debug 调整为 warning,退出实时连接和流量面板。
- 关闭局域网共享、热点转发和不使用的外部控制器监听。
- 启用分应用代理,只接管确实需要经过代理的应用。
- 恢复默认 DNS 测试,排除自定义 DoH、DoT 和 Fake-IP 配置问题。
- 在系统设置中允许客户端后台运行,避免 VPN 服务循环重启。
- 分别用 Wi-Fi 和移动数据测试,识别弱信号造成的基带耗电。
- 最后再考虑更换客户端版本或重新导入精简配置。
需要进一步取证时使用 ADB
熟悉 Android 调试工具时,可先重置电池统计,运行固定测试流程,再导出结果。手机需要开启开发者选项和 USB 调试,命令在电脑端执行。
adb shell dumpsys batterystats --reset
adb shell dumpsys batterystats
adb shell dumpsys activity services
第一条命令会重置当前电池统计,应在测试开始前执行。第二条用于查看唤醒、网络和进程活动,第三条可确认 VPN 服务是否反复创建。重点比较同一客户端在修改前后的唤醒次数与运行时长,不要拿不同手机型号的绝对数值直接比较。
仍然发热或掉电时检查这些异常
完成基础优化后,如果待机一小时仍下降 5% 以上,应查看日志时间线。持续出现相同报错,通常比单纯的应用占比更有定位价值。
- 节点连接超时:当前节点不可达,客户端或应用持续重试。切换到稳定节点,并把失败节点移出自动组。
- 订阅解析失败:订阅内容与客户端格式不兼容,后台更新每次都失败。先暂停自动更新并检查订阅格式。
- 规则文件下载失败:规则地址需要代理,但代理尚未建立,可能形成启动阶段的重复请求。
- DNS 超时:更换为可达上游,检查私人 DNS、客户端 DNS 和浏览器安全 DNS是否重复接管。
- VPN 服务重复启动:关闭其他 VPN、加速器、防火墙或本地过滤应用。Android 同一时间通常只允许一个 VpnService 生效。
- 配置频繁重载:关闭文件同步工具对配置目录的持续改写,避免客户端检测到变化后反复加载。
更新客户端前应导出当前配置,并记录可复现条件。FlClash 等基于 mihomo 的客户端会随着内核升级修复兼容性问题,但新旧版本的 TUN、DNS 和规则行为可能存在差异。更新后先导入一份基础订阅测试,不要立即叠加旧版中的全部实验参数。
合理的目标不是让系统电池页面完全看不到 Clash,而是让后台运行保持低波动:屏幕关闭后机身不持续发热,VPN 不循环重启,普通待机每小时额外耗电控制在约 0.5 至 1.5 个百分点。实际结果还会受到电池健康度、5G 信号、节点延迟和业务流量影响,应以同一台手机的修改前后对照为准。