2011-09-15 65 views
4

當一個adroid服務被操作系統殺死(由於內存不足或低功耗)。服務在被殺之前是否得到通知? onDestroy()回調是否被調用?在被Android殺死之前保存綁定服務狀態

我們主要關心的是我們保存服務的狀態時,它被殺害之前的能力。我們知道,一旦資源可用,服務可能會由系統重新啓動,但在服務被殺之前保存服務狀態的推薦方法是什麼?

附件中是我們的一個綁定的服務力閉合過程的瞭解序列圖,它包括了我們想發生什麼。

+0

我認爲(但不確定)你會在系統殺死你的應用時得到onDestroy()調用。但是你應該知道,有些時候你的應用程序會被殺死,並且你沒有得到任何回調(即用戶殺死任務殺手)所以你要確保這不會在你的系統中造成嚴重問題。 – FoamyGuy

回答

1

它被殺害之前,該服務得到通知? onDestroy()回調是否被調用?

可能。這是不能保證的。

我們主要關注的是我們能夠在服務死亡之前保存服務狀態。

服務不應該有一個只能在RAM中表示狀態。你應該在狀態改變時保持狀態(例如使用數據庫)。

+1

就像Activity一樣,onDestroy()在內存中死亡時也不會被調用。 – hackbod

+3

必須將所有狀態更改保持爲閃存是不可接受的,因爲它需要大大增加電池使用量並縮短閃存的使用壽命。 – Michael

0

從API級別14(ICS)開始,如果服務正在被用戶移除並且系統決定that it is a good time for a process to trim unneeded memory from its process,則android os將通知該服務。這是一個link

相關問題