我知道我的問題標題一定聽起來非常模糊。但讓我在這裏清除它。在活動被殺之前可以在onDestroy()裏面花多少時間?
說我有一箇中間件堆棧上的android應用程序。在我的活動的onCreate()中,我初始化了我的中間件模塊。
在其onDestroy()中,我必須取消初始化中間件。現在我的中間件調用可能需要一段時間才能處理。所以我想知道onDestroy()函數有多少時間,並且看看我的deinitialisation是否可以在那個時間內發生。
在onDestroy()中保留我的de-init是否合理?
另外,假設我初始化了活動A1的onCreate()中的中間件。點擊按鈕後,活動A1切換到活動A2。在低內存的情況下,LMK會殺死一段時間未使用的活動。在這種情況下,活動A1不會被殺死嗎?當活動A1被殺死時,我在A1中創建的所有實例是否也會被刪除?
問候, 奇奇
@jhominal:關於何時保存用戶數據的小記。一個人應該知道,只有當應用程序被系統殺死時,纔會調用'onSaveInstanceState()'。如果應用程序由於用戶按下後退按鈕或在您的代碼中調用了finish()而退出,它將不會被觸發。所以如果你想100%確定你保存了當前的應用程序狀態,這應該在'onPause()'中完成。 – Nailuj 2010-10-21 12:52:58
另一個說明:當你說'你的應用程序有(可能)儘可能多的時間',這是不正確的。如果你的應用有足夠的時間,它可能很容易凍結整個系統。所以5秒鐘的規則依然如此。 – Nailuj 2010-10-28 08:46:01
@Nailuj:該應用程序在其自己的Linux進程中運行。如果它開始在'onDestroy'方法中消耗太多資源(用戶已經離開了應用程序),這個過程將被系統毫不客氣地殺死 - 但是發生這種情況的條件應該與一定數量的消耗資源而不是特定的持續時間。 – 2010-10-28 09:06:24