2012-02-16 105 views
0

當由於內存不足而調用服務的onDestroy時,我應該做一些事情,例如告訴工作線程他們應該結束工作,然後等待他們退出,然後讓系統殺死主機進程?如果是這樣,系統允許我等待多長時間?我應該讓工作線程在任何時候儘快結束自己嗎?在Android中服務即將死亡時執行線程清理

還是我完全錯了?


或者,也許我應該問:

哪裏是清理工作線程的最安全的或最佳點?或者什麼是最安全或最好的方式。或者根本就沒有這種東西,而且隨時準備在不通知的情況下殺死一個線程?

+0

onDestroy將是我的選擇。 – Ruuhkis 2012-02-16 07:23:23

回答

0

IIRC生命週期方法只會讓您等待1-2秒,然後顯示「活動無響應」消息。一般來說,你不能等待這些方法中的任何事情。

onDestroy是最後一個生命週期方法,當應用僅在後臺時不會被調用。你想讓你的線程在後臺運行嗎?這取決於你的應用程序,但這通常是不好的行爲。

我建議您可能想暫停onPause(),當應用程序不再處於前臺時,或者至少在onStop()時應用程序不再可見時發生。

+0

嗯...服務 – BlueWanderer 2012-02-16 08:43:49

+0

啊大寫-S'Service',是的,它是'onDestroy()'然後。 – 2012-02-16 09:29:17

+0

據說onDestroy不保證被調用。這是真的嗎?如果不是這樣,我需要等多久才能從onDestroy返回,我的意思是「如果我可以等待一些冗長的IO操作完成,或者我應該放棄它們?」 – BlueWanderer 2012-02-16 10:16:32