2014-06-20 112 views
0

假设我实现了一个启动线程执行长时间运行操作的服务。 如果服务被杀死,那么它是否会自动杀死那些正在运行的线程呢?如果一个Android服务被杀死了,线程是否也会被服务杀死?

谢谢。

+0

谢谢@Perroloco - 有道理。我猜“杀戮单位”始终是过程级别,因此也取消了任何线程。 – Cumbayah

+0

@Cumbayah我对此不太确定“如果一个活动暂停或停止,系统可以通过要求完成(调用其finish()方法)或者简单地终止它的过程来从内存中删除它。它似乎并不总是过程级别。 http://developer.android.com/guide/components/activities.html#Lifecycle –

回答

1

服务在与您的应用程序相同的进程中运行,除非您在清单中另有指定。如果它被杀死(即崩溃),那么属于该进程的所有线程都将消失,但我不认为这就是你要求的。如果服务以正常方式停止,则服务启动的线程将不会自动终止,除非服务正在另一进程中运行,该进程也会终止。它可能不是。即使在其中运行的“活动”或“服务”已停止并销毁之后,Android仍倾向于保留流程。

1

我发现这也是事实。 我想要一个后台服务中的线程(主UI过程)。我希望在主要活动被杀时该服务被杀死,但是我发现即使活动和服务(stopSelf)已停止/已停止,我的线程仍会继续运行。我不得不明确杀死线程。我通过调用yourThread.interrupt()来做到这一点。