好吧,這個煩人的問題可能是相當熟悉的,但我不知道它被稱爲以及如何解決它。當我打開我的應用程序並進入菜單並在此之後,恢復應用程序時,我丟失了所有數據。看來,android喜歡清理數據,以保持操作系統儘可能快速和穩定。建議在保存內部存儲器中的數據並在恢復應用程序之前清除任何類型的變量或返回空值時恢復它的哪種方法?我嘗試setSharedPreferences來解析一個ArrayList到一個對象,並將該對象解析爲一個字符串來保存數據並檢索它,但是我得不到Object to String異常。必須有更好的選擇。NullPointerException在恢復應用程序後
任何幫助將不勝感激。
編輯:
這是我如何檢索和存儲數據:
JSONObject data = (JSONObject) new JSONTokener(result).nextValue();
Helper.RAW_PEOPLE_INFO = data.getJSONArray("people");
Helper.PEOPLE_CONTAINER = new ArrayList<PeopleInfoStorage>();
for(int i = 0; i < Helper.RAW_PEOPLE_INFO.length(); i++){
Helper.PEOPLE_CONTAINER.add(new PeopleInfoStorage(Helper.RAW_PEOPLE_INFO.getJSONObject(i)));
}
我用PEOPLE_CONTAINER的ArrayList以後使用它,當我需要它。在恢復我的應用程序之前,PEOPLE_CONTAINER ArrayList可能會被清理乾淨,所以有人可以幫助我舉一個例子說明如何將此ArrayList存儲在內部存儲器中,以便我可以從內部存儲器中檢索數據並將其放回到PEOPLE_CONTAINER ArrayList中它再次爲空。
它必須是這樣的:
@Override
protected void onPause() {
if(Helper.PEOPLE_CONTAINER != null){
//save the Helper.PEOPLE_CONTAINER ArrayList to the internal memory
}
super.onPause();
}
@Override
protected void onResume() {
if(Helper.PEOPLE_CONTAINER == null){
//retrieve the data and store it back to Helper.PEOPLE_CONTAINER ArrayList
}
super.onResume();
}
這真的很難,以幫助不再看到相關的代碼和logcat的錯誤... – Sam
好吧,讓我添加一些代碼,只要給我一些時間。 –
你需要什麼類型的數據保存?如果它像Strings/ints一樣簡單,我只需從文本文件讀取/寫入。 – JuiCe