如果VPN应用程序被杀死,该怎么办?

时间:2019-07-26 00:22:34

标签: android vpn android-vpn-service ics-openvpn

这是一个普遍的问题,因为我对以下情况没有足够的了解,很遗憾,在google上找不到任何可以解释的情况。

假设我有一个扩展VPN服务的应用程序,一些异步任务,一些线程来读取和处理从VPN接口读取的数据包。据了解,一旦启动VPN,尽管我们从任务中终止了该应用程序(强制退出),但VPN仍将继续运行。

那么当我们终止该应用程序时会发生什么?是否所有资源(线程,主UI线程)都被破坏了?

类似地,当我们重新启动应用程序时,是否所有资源都重新初始化了?

您能在这里解释它的工作原理吗?

我有这个问题,因为我有一个在主线程上运行的后台线程。当我强制关闭应用程序时,线程不会中断,但是当我尝试重新启动应用程序后(强制退出或终止后)尝试更新线程时,由于该线程不可访问,我得到了空指针异常。整个UI线程是否会重新初始化?

使用VPN服务针对这种情况的解决方案是什么?

1 个答案:

答案 0 :(得分:0)

  

可以理解,一旦启动VPN,尽管我们从任务中退出了该应用程序(强制退出),VPN仍将继续运行。

错误的是,“强制关闭”会破坏整个应用程序及其所有影响,例如VPN服务,无论如何。因此,用户手动杀死该应用程序是一切的绝对终点。死路。对此无能为力。

  

类似地,当我们重新启动应用程序时,所有资源是否都重新初始化了?

在这种情况下,一切都会重新开始。甚至缓存也可能会损坏并删除。

对于后台线程,应将它们全部放在Service内的AndroidManifest.xml

这样,即使用户清除了“应用程序”历史记录,您的服务也将继续运行。

但是,如果您的应用被手动杀死,那么无论什么事情都将被销毁,并且您对此无能为力,这是Android中的一项安全策略。