2016-10-28 84 views
8

例如,如果我需要保留用戶可以在我的應用程序中編輯的一些非常重要的數據,每次用戶更改此類數據時是否需要保存它們,或者如果我將它保存在onPause()中, onStop()或onDestroy()方法?
可以以某種方式應用程序結束沒有任何這些方法調用? (例如當電池用完時)OnPause()或onStop()是否即使因電量不足而死機?

+0

您的應用程序可能會崩潰,用戶可能會丟棄手機,導致後蓋和電池飛走。在這兩種情況下,「活動」生命週期方法都會被跳過,並且未保存的手機RAM中非常重要的數據將丟失。我不知道當設備用完電池後會發生什麼,但[這個舊的答案](https://stackoverflow.com/questions/27845728/what-android-methods-are-called-when-battery-dies)暗示'onDestroy()'被調用。 –

回答

2

這當然不能在onDestroy()中完成。 按照documentation

在有些情況下,系統簡單地殺死活動的 託管進程,而不調用它這個方法(或任何其他人),所以 它不應該被用來做的事情是意圖在該過程消失後保持在 左右。

所以是的,應用程序可以在不調用任何生命週期方法的情況下結束。

1

在這種情況下,請通過調試界面驗證您的手機活動,一些手機終止您的應用程序,這是強制退出。

2

在這種情況下,當手機關機時,您可以使用ACTION_SHUTDOWN意圖。 更多信息here。對於所有其他情況,onPause應該完成這項工作。即使在提供的鏈接中,也有一個聲明,如果應用程序在FG中,將會調用onPause。

應用程序通常不需要處理這個問題,因爲前臺 活動也會暫停。

但是,如果它不是那麼昂貴的操作,我會去保存編輯後的數據。

2

根據Android活動生命週期的documentation,被稱爲當活動進入後臺但尚未(尚未)終止時。

因此,大多數Android文檔和示例代碼,你會發現中用於保存活性編輯任何持續狀態,以「正在編輯」的模式呈現給用戶,並確保不會丟失任何信息,如果沒有足夠的資源。

因此,在您的使用案例中,您需要爲您的Activity實施並編寫代碼以保存活動狀態(EditText內容或任何其他正在進行的用戶交互)。當Android下次啓動您的活動時,Android系統將保存活動狀態,您可以隨時在活動的onCreate中找到活動狀態。

相關問題