繁体   English   中英

关闭应用程序后,守护进程线程仍然存在

[英]Daemon Thread is still alive after closing the app

我只是在测试一个几乎空的android项目

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

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

但是守护进程线程永远不会死。

Daemon Thread与一个空的JAVA PROJECT一起工作得很好。

但是使用android则无法正常工作。

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

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

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

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

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

但是没有人提及我的经历。

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

但是守护进程线程永远不会死。

大概您没有cancel()线程。 您需要在适当的时候这样做。

但是使用android则无法正常工作。

它工作正常。 通过阅读引用的段落可以看出它的作用与Java中的作用相同。 区别在于您的进程有多长时间以及该进程中的线程(Android进程除您派生的线程外还有其他线程)。

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

在适当的时候在线程上调用cancel()

按下返回按钮不会关闭应用程序(假设关闭意味着进程终止)。 这仅完成一项活动,但进程仍在运行。 为了达到期望的行为,您可以使用例如。 AsyncTask并从您的Activity的适当回调中调用cancel() ,例如。 如果您确实对按下后退按钮感兴趣,请在onDestroy()onBackPressed()中。

道歉,指出可能的基本要领,但要解决您的问题,请确保在关闭后确保其未在任务管理器中运行(ctrl + alt + delete)。让任务管理器与守护程序一起运行,然后在守护程序关闭期间观察发生的情况和在任务管理器中关闭后,因为它可能正在根据daemon中的settings-check设置来备份文件...。或者您已使用ExecutorService在Java中以Daemon的身份运行,在这种情况下,这将防止您的程序关闭,请参见此处ExecutorService-10个提示和技巧

Java应用程序进程在Windows和高速缓存的线程池上挂起

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM