1

这是一个普遍的问题,因为我对以下场景没有足够的理解,不幸的是在谷歌上找不到任何解释它的东西。

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

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

同样,当我们重新启动应用程序时,是否所有资源都再次初始化?

你能解释一下它是如何在这里工作的吗?

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

使用 VPN 服务解决这种情况的方法是什么。

4

1 回答 1

0

据了解,一旦我们启动 VPN,虽然我们从任务中终止了应用程序(强制退出),但 VPN 会继续运行。

错了,“强制关闭”无论如何都会破坏整个应用程序以及随之而来的所有效果,例如 VPN 服务。所以用户手动杀死应用程序是一切的绝对结束。死路。对此无能为力。

同样,当我们重新启动应用程序时,是否所有资源都再次初始化?

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

对于后台线程,您应该将它们全部放在一个Service具有单独进程名称的AndroidManifest.xml

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

但是如果你的应用程序被手动杀死,那么无论如何都会破坏一切,而你对此无能为力,这是Android中的安全策略。

于 2019-07-26T02:16:50.807 回答