适用条件与观察范围
Clash Meta for Android 是 Clash.Meta 内核的图形界面客户端,最低要求 Android 5.0,建议 Android 7.0 及以上,并支持 armeabi-v7a、arm64-v8a、x86、x86_64。它以应用形式提供 VPN 解决方案,因此后台是否仍在工作,不能只看应用是否还开着,而要以系统对 VPN 连接的认定为准。
适用场景是:连接已经建立,随后把应用切到后台、回到桌面或使用其他应用。目标不是猜测流量是否“看起来正常”,而是核对系统仍把该服务视为当前 VPN。系统对每个用户(或工作资料)只允许一个活动 VPN 服务;新服务启动会自动停止已有服务。首次启用前必须经过连接请求确认,未获授权时无法成为当前 VPN。
后台应逐项核对的系统状态
按固定顺序记录,避免把“应用进程还在”误当成“隧道仍在接管流量”。
第一步:看状态栏是否仍有 VPN(钥匙)图标。该图标表示系统认定连接处于活动状态。图标消失,说明从系统视角连接已不再活动,即使应用进程尚未退出,也不能当作后台仍在代理。
第二步:看应用是否仍提供不可消除的通知。官方要求 VPN 服务处于活动状态时展示此类通知,内容可以是连接状态或网络统计;点按通知会把应用带回前台。服务变为非活动后应移除该通知。后台使用时若通知消失,应判定服务已停止或未以前台服务方式维持。
第三步:下拉快捷设置,查看活动连接时的信息面板。点按标签可打开更多信息对话框,并提供进入设置的链接。若状态栏图标还在、快捷设置却没有对应信息,应把时间点记下,作为“系统 UI 不一致”的对照,而不是自行解释成节点问题。
第四步:打开系统 VPN 列表(设置 > 网络和互联网 > VPN),确认该应用仍在已授权列表中,并核对其系统选项是否被更改或被“忘记”。有人在该页面断开、忘记应用,或关闭正在使用的始终开启 VPN 时,系统会停止活动连接。
第五步:若启用了始终开启 VPN(Android 7.0 及更高版本可用),还要看断开或无法连接时是否出现系统级不可消除通知。Android 8.0 及以上会用这类通知提示始终开启连接失败;点按后可看到说明。通知在重新连上或关闭始终开启后才会消失。这与普通后台掉线是同一类系统信号,应单独记录。
判断依据与失败后的下一步
判断“后台仍被系统视为 VPN 活动”需要同时满足:状态栏钥匙图标存在;活动通知仍在;快捷设置能打开连接信息。三者缺一,就应按“系统侧连接未维持”处理,而不是继续改节点。
Android 8.0(API 26)及以上对后台应用有限制。系统可在后台调用服务的 onStartCommand(),但若未转入前台服务,连接很容易在切到后台后被回收。因此,后台掉线且通知、图标同时消失时,优先怀疑服务未保持前台,而不是配置文本写错。
若 VpnService.prepare() 未被满足,或授权被撤回,建立本地接口会失败;权限对话框与相机、通讯录类授权类似。后台过程中若突然出现需重新确认的连接请求,说明当前应用已不是系统选定的 VPN。系统调用 onRevoke() 时,流量已经改走其他网络接口,此时再观察应用内状态意义有限,应先回到系统 VPN 页确认是否被断开或被其他应用替换。
失败时下一步:先在系统 VPN 页确认应用仍被信任、未被忘记;再确认没有第二个 VPN 抢占;若使用始终开启,核对该选项是否仍开启,以及是否出现无法连接的系统通知。需要从外部恢复服务时,可向 com.github.kr328.clash.ExternalControlActivity 发送 com.github.metacubex.clash.meta.action.START_CLASH 或 TOGGLE_CLASH(应用包名为 com.github.metacubex.clash.meta),然后再重复上述图标、通知、快捷设置三项核对。若系统 UI 已显示活动,但业务访问仍失败,应改查隧道对端与路由,而不是重复开关后台。
https://developer.android.com/develop/connectivity/vpn https://github.com/MetaCubeX/ClashMetaForAndroid