关闭应用程序后,守护程序线程仍处于活动状态

时间:2015-08-09 13:17:32

标签: java android multithreading daemon

我只是使用几乎空的 android项目进行测试

我在主活动中创建了一个守护程序线程。

启动应用程序,然后按手机上的后退按钮关闭应用程序。

但守护程序线程永远不会消亡。

守护程序线程与空 JAVA PROJECT 的效果非常好。

但是使用android,它不起作用。

我搜索了几个小时的解决方案但只得到了这个。

  

只要存在非守护程序线程,守护程序线程就会运行   运行。当最后一个非守护程序线程结束时,运行时将退出。   这通常与具有UI的应用程序无关。

有谁知道如何解决这个问题?

PS。 我不是通过按下硬件后退按钮而是按下“强制停止”按钮来停止应用程序。按下'应用信息',应用和线程都消失了!

我首先从android开发的一些示例代码中了解了Daemon Thread。

但是没有人提到我所经历过的事情。

Android开发人员是否只相信Daemon Threads肯定会被杀死?

3 个答案:

答案 0 :(得分:2)

  

但守护程序线程永远不会消亡。

据推测,你没有cancel()线程。你需要在适当的时候这样做。

  

但是使用android,不起作用。

它运作得很好。它的工作方式与Java相同,您可以通过阅读引用的段落来判断。不同之处在于how long your process lives和该进程中的线程(Android进程除了你分叉之外还有其他线程)。

  

有谁知道如何解决这个问题?

在适当的位置调用线程上的cancel()

答案 1 :(得分:2)

按下后退按钮不会关闭应用程序(假设关闭意味着进程终止)。这只会完成一个活动,但进程仍在运行。 为了达到理想的行为,你可以使用例如。 AsyncTask并通过适当的回调调用cancel(),例如。如果您对后退按钮感兴趣,可以在onDestroy()onBackPressed()中。

答案 2 :(得分:1)

道歉指出可能的基本出来,但是关注你的问题,你关闭它确保它没有在你运行任务管理器(ctrl + alt +删除)..任务管理器与你的守护进程一起运行然后在守护程序关闭期间看什么在关闭任务管理器期间和之后发生,因为它可能是根据守护程序中的设置检查设置备份文件....或者您使用ExecutorService作为Java中的守护程序运行,在这种情况下这将阻止您的程序关闭看到这里  ExecutorService - 10 tips and tricks

Java Applicatioin Process Hangs on Windows and Cached Thread Pool