这是一个普遍的问题,因为我对以下情况没有足够的了解,很遗憾,在google上找不到任何可以解释的情况。
假设我有一个扩展VPN服务的应用程序,一些异步任务,一些线程来读取和处理从VPN接口读取的数据包。据了解,一旦启动VPN,尽管我们从任务中终止了该应用程序(强制退出),但VPN仍将继续运行。
那么当我们终止该应用程序时会发生什么?是否所有资源(线程,主UI线程)都被破坏了?
类似地,当我们重新启动应用程序时,是否所有资源都重新初始化了?
您能在这里解释它的工作原理吗?
我有这个问题,因为我有一个在主线程上运行的后台线程。当我强制关闭应用程序时,线程不会中断,但是当我尝试重新启动应用程序后(强制退出或终止后)尝试更新线程时,由于该线程不可访问,我得到了空指针异常。整个UI线程是否会重新初始化?
使用VPN服务针对这种情况的解决方案是什么?
答案 0 :(得分:0)
可以理解,一旦启动VPN,尽管我们从任务中退出了该应用程序(强制退出),VPN仍将继续运行。
错误的是,“强制关闭”会破坏整个应用程序及其所有影响,例如VPN服务,无论如何。因此,用户手动杀死该应用程序是一切的绝对终点。死路。对此无能为力。
类似地,当我们重新启动应用程序时,所有资源是否都重新初始化了?
在这种情况下,一切都会重新开始。甚至缓存也可能会损坏并删除。
对于后台线程,应将它们全部放在Service
内的AndroidManifest.xml
这样,即使用户清除了“应用程序”历史记录,您的服务也将继续运行。
但是,如果您的应用被手动杀死,那么无论什么事情都将被销毁,并且您对此无能为力,这是Android中的一项安全策略。