我应该在android中使用setDaemon()吗?

时间:2012-10-17 08:26:44

标签: android multithreading

我正在为我的应用程序创建一个服务线程,这个线程将执行后台任务,因此只有在我的主线程正在运行时它才会被使用。

那么我应该将它声明为守护进程吗?

2 个答案:

答案 0 :(得分:4)

在Android上,最好确保明确管理线程。告诉他们何时终止。

请参阅此处的相关讨论。他们没有找到解决方案,而是观察了长生命线:

What hooks do we have in order to do worker thread termination on application exit

请注意,此平台无法保证标准Java关闭挂钩:

http://developer.android.com/reference/java/lang/Runtime.html#addShutdownHook%28java.lang.Thread%29

那么,不是依赖于(未记录的)相信Android会正确杀死你的VM并猜测守护进程/非守护进程,而是控制线程似乎更好。

答案 1 :(得分:2)

不是真的。 Android没有针对应用的main()方法,但它们不会退出,而是由系统管理。如果它决定杀死你的应用程序以释放资源,它(很可能)不关心你是否有守护程序线程。