2013-09-26 116 views
1

當前即時存儲我的所有用戶信息,並且我創建了名爲userInfoCore的朋友信息,它擴展了Application,因此我可以將值存儲在上下文中。當我的應用程序崩潰時,它將刪除這些值,並且我的用戶被迫重新登錄,所以我想將它們存儲在SharedPreferences中,以便在MainActivityonCreate中再次抓取它們。在應用程序崩潰時在SharedPreferences中存儲應用程序上下文

我知道如何存儲它們,那不是問題。問題是我不想用重複的代碼讓我的代碼過度擁擠,並且將存儲方法放在我所有活動的所有onDestroy中,並且我在userInfoCore類中不能使用@Override onDestroy,因爲它不是我想象的活動?

有些傷害會很大。謝謝!

編輯:

香港專業教育學院發現,這條線在Android清單導致即使用戶按下主頁屏幕上我的應用程序上下文的數據被破壞。 android:launchMode="singleInstance"

我的想法是是的,我可以把它們存儲在或做什麼@CommonsWare建議。然而就像我說的,我不想做所有這些。如果我能找到問題的根源......我有。 (清單中的singleInstance)然後我會更快樂。

回答

2

有些傷害會很大。

當數據更改時更新持久性存儲。自定義Application子類與任何單例類似,只應被視爲數據的緩存或其他瞬態點。如果你關心價值觀,堅持它們,在數據發生變化的時候。

+0

進出口新的Android的發展,裸與我的名字命名的喜好是什麼持久性商店,我如何實現這一目標?我知道我要求我很高興,但也許我應該要求提供一些有用的鏈接或一些示例代碼。 –

+0

順便說一句,熱愛你在社區做的工作。偉大的工作,你的大腦工作:D –

+0

@AaronRussell:「什麼是持久存儲」 - 一個文件。或者一個數據庫。或'SharedPreferences'。或「雲」。 – CommonsWare

0

這是使用模型 - 視圖 - 演示者(或模型 - 視圖 - 控制器)模式的好參數。通過從View和Presenter(分別爲Layout和Activity)中分離模型(域數據和過程),您只需編寫Store邏輯一次。

然後你有兩種選擇:或者按照@CommonsWare的建議,當模型發生變化時讓模型自己寫,或者在每個應用程序的onPause(onDestroy太遲了!它可能永遠不會被調用)中添加一個簡單的調用。模型來告訴它保存自己。

注:該模型可以接受使用上下文作爲施工參數,找到一個共同的喜好,也可以創建自己的使用PreferenceManager

+0

我同意onDestroy並沒有得到所有的時間,這是可悲的,它那樣做。我遇到了一個問題,並且不得不在onPause上放一些東西,並且從中吸取了教訓。你的第二個建議基本上是我試圖避免的。 –