2014-06-20 131 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()來做到這一點。