如果我有一個正在運行的前臺服務,它會產生一個線程,該子線程是否會被Android OS終止?還是那個子線程就像服務一樣受到保護?爲了防止子線程被殺,我是否需要將它變成自己的服務?服務的子進程是否可以被殺死?
感謝, 尼克
如果我有一個正在運行的前臺服務,它會產生一個線程,該子線程是否會被Android OS終止?還是那個子線程就像服務一樣受到保護?爲了防止子線程被殺,我是否需要將它變成自己的服務?服務的子進程是否可以被殺死?
感謝, 尼克
你的服務是一個組件。您表示它是「前臺服務」,表示您已撥打startForeground()
。只要你不停止它,前臺服務將傾向於保持該進程 - 並且它的線程被延長 - 不會終止,儘管這不是保證。
Android 從來沒有終止您分叉的線程,除了終止整個過程。
當您說「Android從不終止您分叉的線程」時,這是否意味着即使某個類不是服務產生一個線程...線程將永遠不會被殺死?如果是這樣,爲什麼不把所有的東西放在一個線程而不是一個服務?謝謝! – Nick
如果啓動它的服務被終止,則由服務啓動的AsyncTask以及普通線程不會被終止。換句話說,當你的服務被殺時,你應該清理你的線程。
參見服務的生命週期:http://developer.android.com/reference/android/app/Service.html#ServiceLifecycle
你可能要考慮使用IntentService:
IntentService是對於處理需求異步 請求(表示爲意圖)服務的基類。
每個進程都可以被殺死。特別是如果你使用電源按鈕。 –
我想我真正的問題應該是......子線程與父服務類具有相同的更高優先級嗎? – Nick
http://developer.android.com/reference/android/app/Service.html - 請參閱流程生命週期 –