2009-11-26 132 views
2

我的應用程序由兩個活動,A和B.我在考慮這一系列的步驟/加載數據到/:活動/進程的生命週期 - 時節省磁盤

  • 活動下開始。
  • A啓動B [A暫停,B正在運行]。
  • B啓動地圖意圖[A和B都暫停]。

現在用戶正在使用地圖應用程序,系統決定需要更多內存。在這種情況下,系統能否殺死我的活動中只有一個用於記憶,還是會一直殺掉全部活動中的「」進程

這兩種活動有着像一些靜態數據:

class Data { 
    public static String mName; 
    public void save() { 
     // write to file: mName; 
    } 
    public void load() { 
     // mName = read from file; 
    } 
} 

ActivityA.mTextView.setText(Data.mName); 
ActivityB.mListView.addText(Data.mName); 

所以,當我的應用程序的任何活動得到onSaveInstanceBundleSate()調用,我叫Data.save()將其寫入到磁盤中。現在的問題是,在Activity的onCreate()方法中,我應該簡單地檢查Data.mName == null,如果是,則假定Activity從kill狀態返回,並嘗試從磁盤再次恢復?我不清楚什麼時候應該完成這個恢復工作,考慮到活動A可能還可能還活着等。 - 如果活動A還活着,但B從死亡狀態回來,我不想腐敗狀態,

感謝

感謝

回答

1

也許是最好的解決方案是你的靜態數據移動到服務。這種方式可以在android關閉服務時保存和恢復數據,而不是在Android關閉使用數據的單個活動時。

如果不使用服務(或者也可以是內容提供者,或者甚至是覆蓋應用程序,儘管看起來被人忽視),您必須自己管理這個生命週期,正如您所看到的那樣可能會非常棘手。