2015-06-28 274 views
1

我怎麼知道,如果一個活動一個從意向開始啓動:活動從背景或其他活動

Intent intent = new Intent(this, Activity.class); 
startActivity(intent); 

或由於活動週期(破壞後,活性的可再次創建,如果它在歷史應用)。

有什麼辦法來區分這兩種方式來調用一個活動?

Android Activity Lifecyce

回答

2

使用PutExtras()IntentActivity

檢查thisthat或本-indirect- post

當你Activity被重建它與不同Intent不是創建最初被用來激發它的Intent-(例如,特地從歷史記錄),因此,如果您使用額外並檢查您的OnCreate你會更好 - (閱讀與問候的不是洙多的間接崗位)

+0

使用'putExtras這種方法'更適用於這種情況下,bcause'Intent'從'來Activity'不能失去其'mExtras'。 – Richard

2

所以,如果我理解你想檢查是否onCreate它被稱爲第二次。您可以通過使用這個邏輯實現的是:()

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if(savedIntanceState != null && savedIntanceState.getBooleanExtra("FIRST_RUN", false)){ 
     //not a first run 
    } 
} 

protected void onSaveInstanceState(Bundle outState) { 
    outState.putBoolean("FIRST_RUN", true); 
    super.onSaveInstanceState(outState); 
}