android Always-on VPN 在内部如何工作?

How android Always-on VPN internally works?

我可以从 developer.android.com 中了解到如何从 VPN 应用程序的角度支持 Always-on VPN

但是找不到任何关于 android 系统如何在内部实现此功能的信息?

提前致谢

Does the android system wake up periodically and check if the VPN service is running and if not then tries to start the specified VPN service?

否,系统启动后会启动一次 VPN 服务(使用操作 android.net.VpnService)。根据 Android 版本,用户首先必须解锁系统(似乎 Android 8+ 就是这种情况)。 Android 7.x 情况并非如此,如果 VPN 应用程序(例如需要访问锁定的 KeyChain.

中的凭据

只要用户在系统的 VPN 设置中启用永远在线的 VPN 功能,它也会启动 VPN 服务。

Does this happen on a regular interval basis?

否,但自 Android8 起,如果启用了永远在线的 VPN 功能但当前没有隧道接口,系统会显示通知(点击通知将打开系统的 VPN 设置)。

What if there is no network connectivity? Will android wait until the n/w conn is restored to start the VPN service?

不,VPN 应用程序必须处理这种情况。