2011-04-20 60 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分钟“)。