2012-08-28 34 views

回答

2

正確答案是 「NO」。當Android想要關閉應用程序以回收資源時,只需殺死您的進程。而已。沒有警告,沒有回調,根本沒有機會做任何事情。

0

執行onDestroy()方法Activity

Activity lifecycle

+1

我相信OP想要捕獲進程關閉,而不是關閉活動。按回來會關閉活動,但會使應用程序繼續運行,前提是內存不足。 –

+0

如果進程被Android終止,onDestroy()在進程中的任何活動上都沒有被**調用。他們只是走開。沒有警告。噗!不見了。 –

1

嘗試從本地(NDK/JNI)庫中捕獲SIGKILL。但是在信號處理代碼中你幾乎無法做任何有價值的事情;絕對不會回到Java世界。信號處理程序嚴重受* nix規則限制。

你想要完成的第一件事是什麼?所有明智的清理通常在活動終止代碼中執行(onDestroy())。在大多數使用情況下,流程生命週期不應該成爲您的問題,因爲它明確記錄爲不可預測。

+0

我嘗試保存對象狀態以在下次啓動活動時恢復它。目前,我通過序列化將它保存在onSaveInstanceState中。我不喜歡它的事實是,每當我的活動從棧頂移出時(除了按下後退按鈕的情況),對象都會被序列化。所以我做了很多不必要的工作。我只想在進程被終止時保存對象。 –

+0

不要保存到一個文件,保存到一個捆綁,像Android建議。堅持所述包(或將其保留在內存中)的規則取決於系統。總體來說,猜測系統是一件冒險的事情。 –

相關問題