2011-05-05 31 views
0

我試圖區分活動是否被銷燬,然後重新啓動與何時通過標準startActivity調用啓動。區分這一點的最佳方式是什麼?我需要跟蹤一個計數器,並且應用程序被銷燬並重新啓動時,計數器應該增加而不是。我嘗試使用putExtra(String,String),但返回的值是相同的。Android - 如何將活動重新啓動與「正常」啓動區分

回答

2

你可以嘗試使用一個標誌isSavedInstanceState。在onResume中將此標誌設置爲false。在onSaveInstanceState中將此標誌設置爲true。在onStop中檢查此標誌。

@Override 
protected void onStop(){ 
    super.onStop(); 
    if (!isSavedInstanceState){ // this is a HARD KILL, write to prefs 
     SharedPreferences prefs = getPreferences(MODE_PRIVATE); 
     SharedPreferences.Editor editor = prefs.edit(); 
     editor.putYourCounterIncrementHere 
     editor.commit(); 
     Log.d(TAG,"savedPrefs"); 
    } 
    else { 
     Log.d(TAG,"DidNotSavePrefs"); 
    } 
    Log.d(TAG,"onStop"); 
} 

這會使你的計數器增加。如果需要,您可以在onCreate中檢查捆綁包是否爲空捆綁包,但我沒有完全測試該邏輯。

+0

謝謝。它看起來像onSaveInstanceState只在應用程序被殺時調用 - 否則它將爲空。這正是我需要的。 – 2011-05-05 20:27:56