2013-10-07 34 views
3

我正在製作一個只有一個Activity的應用程序。當我按Home或Recent Apps按鈕時,狀態將被正確保存,當我回到應用程序時,一切都在那裏。當我按「返回」按鈕並稍後返回到應用程序時,savedInstanceStateonCreate中始終爲空。我已經讀過,按下後退按鈕後狀態不會保存,但在我的情況下,考慮到後退和主頁按鈕是將應用程序留在用戶眼睛中的同樣有效的方式,直到他們嘗試並返回時,這似乎並不直觀到他們在做什麼。按下後退按鈕時是否無法保存狀態?如何在按下後退按鈕時保存Android應用程序中唯一Activity的狀態?

如果我必須做一些持久性存儲,則:

一)如何重寫後退按鈕的行爲,使其保存應用程序推壓回去的時候,和

B)我能堅持節約一個捆綁包,以便我不必重複狀態保存的代碼?

+2

退出應用程序實際上終止應用程序。使用家庭或最近的應用程序只會隱藏應用程序。如果你想記住你的數據,你將不得不存儲你的數據。 –

回答

0

您要搜索的是SharedPreferences我想看看它。它會幫助你解決你的問題

+0

但是,當我隱藏應用程序時,我必須複製保存到Bundle的所有代碼。 –

+0

後退按鈕不會隱藏它終止...你在onrestoreinstancestate中恢復你的包,並在onCreate中加載你的SharedPreferences ... oncreate只調用一次onrestoreinstancestate當你恢復應用程序時也總是調用 – Nickolaus

+0

我並不擔心關於低效率或浪費的工作我擔心在不止一個地方使用基本相同的代碼。這是不好的編程習慣,並導致錯誤。 –

0

我可能是錯的,但我的理解是,當您更改設備方向時,savedInstanceState只會保存您的數據,但只要您單擊後退按鈕,您的活動就會被銷燬。爲了在按下後退按鈕時保存數據,可以使用SharePreferences保存數據,也可以使用單例類。

相關問題