2013-10-06 19 views
0

我想知道活動中的getIntent()有多長時間可用(不返回null)。因此,讓我說我從我的活動A開始活動B,並在意圖中傳遞一些額外的數據。Intent可用多久

在Activity B中,我將從onCreate()方法的活動中讀取額外的數據。 目前爲止這麼好。但是getIntent()有多長?我的意思是,如果用戶正在顯示活動B,但切換到另一個應用程序(即通過使用多任務按鈕),並且在幾個小時後用戶再次單擊多任務按鈕(活動可能在此期間已被銷燬)並打開活動B再次。因此將調用Activity B onCreate()來重新實例化Activity B. getIntent()現在是否仍然返回具有額外值的原始Intent,或者是否必須將Intent額外值保存在Activities onSaveInstanceState()中並使用Bundle onCreate(Bundle state)

回答

1

不getIntent()現在仍與附加值返回原意

從技術上講,它返回Intent的副本。一般來說,它應該與原始Intent相同,包括所有附加內容。

+0

所以android會以某種方式保存意圖,並在需要時恢復它? – sockeqwe

+0

@sockeqwe:是的。基本上,如果用戶從邏輯上導航回到特定的活動實例(例如,通過最近的任務列表),Android會將您原來用於創建您的原始副本的「Intent」副本交給您活動實例。 – CommonsWare

0

從Android的文檔,getIntent()回報

Return the intent that started this activity. 

但他們這麼多的情況下getIntent爲空或換車空。檢查這linkthis。特別是在設備旋轉或按下後退鍵時。

但正如其似乎證明文件所說的那樣。只是要在安全方面,我會建議你做以下

if (getIntent() != null && getIntent().getExtras() != null){ 

} 

而且,你的活動代碼應該準備好處理方案,其中getIntent爲空。