2015-04-03 30 views
1

我是新來的android和最近專注於活動週期。 我的理解是,如果我們銷燬一個活動類,所有未保存的數據將被清除。Android活動週期?當活動像Whatsapp一樣銷燬時,文本仍然存在?

但Whatsapp的聊天頁面似乎很有趣,因爲在我退出聊天頁面並重新進入特定聊天頁面後,我會看到未保存的文本保留在edittext框中。

那麼,他們將如何做把戲?它與「savedInstanceState」有關嗎? 在此先感謝!

enter image description here

+0

你是最小化屏幕還是你按下按鈕? – Keshav1234 2015-04-03 05:16:22

+0

它通過在離開屏幕時保存小部件狀態並在屏幕再次加載時重新加載它來完成。 – 2015-04-03 05:19:40

+0

剛剛在我的測試。從最近的列表中刪除應用程序,文本不會保留。這意味着文本不會保存在某些持久性存儲中。 – 2015-04-03 05:21:40

回答

0

參照Scion of Ikshvaku的評論 我創建了一個sqlite表來存儲edittext中的未發送消息。 它會達到與whatsapp相同的結果。訣竅確實不難

1

我的理解是,如果我們破壞的活動課,所有未保存的數據將被清除。

是當然,除非重要的數據保存在一些持久性存儲在onPause()方法和onResume()方法檢索。當Activity被使用或操作系統終止並在稍後重新啓動時,這是通用的持久數據方式。

但Whatsapp的聊天頁面似乎很有趣,因爲在我退出聊天頁面並重新進入特定聊天頁面後,我會看到未保存的文本保留在edittext框中。

當您點擊返回按鈕並再次轉到聊天頁面時,就是這種情況。我證實,當你殺死應用程序本身時,情況並非如此。所以一個好的猜測是活動永遠不會被殺死,數據通過savedInstanceState持續存在。

0

在正常情況下,當您單擊設備上的Back按鈕時,壽命方法將被調用。也許WhatsApp將EditText的文本存儲到SharedPreference中。當您再次轉到此Activity時,此EditText的文本將設置爲存儲在SharedPreference中的文本。當然,在WhatsApp這種情況下,只有開發人員知道。