簡體   English   中英

應用程序崩潰時將應用程序上下文存儲在SharedPreferences中

[英]Storing Application context in SharedPreferences when app crashes

目前,我將所有用戶信息以及朋友信息存儲在我創建的名為userInfoCore的類中,該類擴展了Application因此我可以將值存儲在Context中。 當我的應用崩潰時,這些值將全部刪除,並且我的用戶被迫重新登錄,因此我想將它們存儲在SharedPreferences中,以便再次在MainActivityonCreate中進行抓取。

我知道如何存儲它們,這不是問題。 問題是我不想過度擁擠我的重復代碼的代碼,並把存儲方法中的所有onDestroy是我的一切活動,和我不能@Override onDestroyuserInfoCore類,因為它不是一個活動我能想象嗎?

一些現場會很棒。 謝謝!

編輯:

Ive發現,即使用戶按下主屏幕,android清單中的這一行也導致我的Application Context數據被破壞。 android:launchMode="singleInstance"

我的想法是肯定的,我可以將它們存儲在onPause或執行@CommonsWare建議的操作。 但是就像我說的那樣,我不想做所有的事情。 如果我能找到問題根源...那是我擁有的。 (清單中的singleInstance)然后我會快樂得多。

一些現場會很棒。

數據更改時更新永久存儲。 像任何單例一樣,自定義Application子類應僅被視為數據的緩存或其他瞬時位置。 如果您關心這些值,請在更改數據時保留它們。

這對於使用Model-View-Presenter(或Model-View-Controller)模式是一個很好的論據。 通過將模型(域數據和過程)與視圖和演示者(分別為布局和活動)分開,您只需編寫一次存儲邏輯。

然后,您有兩種選擇:要么按照@CommonsWare的建議進行操作,要么讓模型在更改時自行編寫代碼,要么在每個應用程序的onPause中添加一個簡單調用(onDestroy為時已晚!它可能永遠不會被調用。)告訴模型。拯救自己。

注意:模型可以接受上下文作為構造參數以用於查找共享首選項,也可以使用PreferenceManager創建其自己的命名首選項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM