2011-04-20 68 views
0

假設我的應用程序P的當前任務堆棧包含活動:A B.以某種意圖i開始B。將android:alwaysRetainTaskState標誌保存活動意圖?

A用android:alwaysRetainTaskState標誌定義。

然後用戶切換到其他應用程序,一段時間後P的進程被OS殺死。

然後用戶從主屏幕開始P.由於A具有android:alwaysRetainTaskState標誌,堆棧將被還原爲A B,並且B可見。我的理解是,只有B.onCreate()會被調用,並且A.onCreate()不會被調用。我對嗎?

此外,此刻,B仍然有意圖嗎?也就是說,當B調用getIntent()時,getIntent()會返回null還是一個intent對象,我呢?

謝謝!

+0

你應該接受你的問題給出的答案。 – 2013-03-21 11:06:45

回答

0

我的理解是,只有B.onCreate()會被調用,並且A.onCreate()不會被調用。我對嗎?

是的,你是。

此外,此刻,B仍然有意圖嗎?也就是說,當B調用getIntent()時,getIntent()會返回null還是一個intent對象,我呢?

getIntent()將工作一如既往 - 它將返回Intent對象等於一個你從活動一過(不是同一個實例,但反序列化一個)

這個答案來自於我的實驗(與Android 2.3),但它完全符合Android的獨立活動的意識形態(恕我直言,它是Intent只能包含可序列化數據的唯一原因,即使它在一個應用程序中使用),所以我相信對於所有Android版本都是如此。

甚至不需要「alwaysRetainTaskState」 - 如果您快速返回給您的任務(即根據http://developer.android.com/guide/topics/manifest/activity-element.html#always,系統只會重置任務狀態),系統會引導您進入活動B,即使使用默認的「false」在一定時間內未訪問任務,如30分鐘「)。