2013-07-06 158 views
1

我有一個Android應用程序的問題我寫這似乎應該是一個共同的問題,但我無法找到它的任何信息。如何保存在Android上的活動狀態回上鍵按

我在我的應用程序中有一個記分板活動,它只是在textviews中存儲一個分數網格,它是用戶將更新的那種東西,然後點擊後退鍵並查看一些其他活動,然後稍後再回到更新它,再次離開,等等...

問題是,他們每次離開並回來整個活動得到重置,失去了所有的分數。我無法使用saveInstanceState,因爲它沒有按回來鍵被調用。我真的不知道該從哪裏走,除了在sharedpreferences中儲存孔洞網格,我覺得還有更好的辦法,儘管

任何想法?

+0

使用共享偏好。 – Raghunandan

+0

嘿,我和你有同樣的問題..你找到解決方案嗎?謝謝。 – Survivor

回答

1

通常,您需要將任何狀態信息保存在onPause()中,並在onResume()中將其恢復。

我的印象是,關閉應用程序時會自動保存各種狀態信息,並在重新啓動備份時自動恢復自身(直到Android從內存中刪除應用程序以騰出空間,調用onDestroy()) 。

如果我是你,我會將網格存儲在SharedPreference中。它確實是最可靠的解決方案。

您也可以使用明細本主題: https://stackoverflow.com/a/151940/503508

1

願這幫助你

當用戶按下BACK按鈕,您的前臺活動被破壞。該活動將使用onPause(), onStop(), and onDestroy()進行調用。那個活動對象將被垃圾回收(除非你引入了內存泄漏)。

如果活動很快就會被銷燬,但用戶可能會導航回它的方式,則會定期調用onSaveInstanceState()。突出的情況是在配置更改期間,例如旋轉屏幕。

你應該怎麼做onPause(),如果有的話,是使用「sqlite,文件保存和其他持久性方法」來保存數據。一旦調用onPause(),就不能保證這個活動會停留,或者整個過程都會停滯不前。因此,你所看重的任何東西都應該寫出來存儲在永久存儲器中。

onSaveInstanceState()的「狀態」會影響活動的UI,但不是持久數據模型的一部分。其中很大一部分是由Android內置的該方法的實現自動處理的(例如,EditText中的文本),但是如果您願意,您可以將自己的信息添加到Bundle。但是,您的實例狀態不是您的數據模型,因此您要堅持的任何內容都需要寫入持久性存儲。