2012-12-21 128 views
0

最近我遇到了一個非常難以理清的問題。當Android在後臺遇難後重新啓動應用程序

我有一個活動A有一個帶有片段的視圖尋呼機。我正在從服務器加載數據並輸入到視圖中。從服務器接收到的數據存儲在單個類中,可以通過應用程序訪問。現在用戶移動到另一個活動B,它通過單例類使用服務器數據。

現在當用戶按下home並啓動各種應用程序時,我的應用程序在後臺被終止。當我重新啓動應用程序時,操作系統嘗試以保存的狀態再次加載活動B(我在onSaveInstance中沒有做任何事情),但singleton類中的數據已經丟失,應用程序崩潰。問題是我無法在此活動中再次獲取服務器數據。我應該將整個數據保存在此活動的onSaveInstance中嗎?不鼓勵使用單例類來存儲所有數據嗎?

什麼是處理這種情況的理想方式?任何幫助表示讚賞。

+0

你可以從那裏保存在SQLite數據庫中的數據和獲取數據的特定記錄 –

回答

0

數據有多敏感?在Android中不建議使用骨架來移動數據(通過意圖傳遞它?靜態(請說不))。以太的方式被評論,你應該將數據存儲到主內存。除了實際將它寫入文件之外,Android還提供了一些選項。根據多少數據及其結構有幾個選項。

  1. ContentProvider & ContentResolverBasic Overview。除非你打算讓數據可以被其他應用程序訪問,否則我不會推薦這個。
  2. SQLite。如果您有預先存在的SQL知識或需要關係數據庫的大量數據,那麼這很好。
  3. SharedPreferences。正如其名稱所暗示的,通常用於存儲用戶存在數據,但它也可用於存儲任何數據。如果需要存儲大量或複雜的數據,我不會推薦它。
  4. File。很好的舊java文件類,不需要解釋。

有了我們的數據,我會建議創建一個DataStore管理類,它可以處理上述任何一種方法的io,所以當引用數據時,您只需從該類中提取數據。

相關問題