android:alwaysRetainTaskState标志会保存活动意图吗?

时间:2011-04-20 17:48:05

标签: android

假设我的应用程序P的当前任务堆栈包含活动:A B. A有一些意图启动B。

使用android:alwaysRetainTaskState标志定义A.

然后用户切换到其他应用程序,过了一段时间,P的进程被操作系统杀死。

然后用户从主屏幕启动P.由于A具有android:alwaysRetainTaskState标志,因此堆栈将恢复为A B,并且B是可见的。我的理解是,只会调用B.onCreate()并且不会调用A.onCreate()。我是对的吗?

此外,此刻,B还有意图吗?也就是说,当B调用getIntent()时,getIntent()会返回null还是一个intent对象,i?

谢谢!

1 个答案:

答案 0 :(得分:0)

  

我的理解是,只会调用B.onCreate()并且不会调用A.onCreate()。我是对的吗?

是的,你是。

  

此外,此刻,B还有意图吗?也就是说,当B调用getIntent()时,getIntent()会返回null还是一个intent对象,i?

getIntent()将一如既往地工作 - 它将返回Intent对象,该对象等于从活动A传递的对象(不是同一个实例,但反序列化了一个)

这个答案来自我的实验(使用android 2.3),但它完全符合Android的独立活动意识形态(恕我直言,这是Intent只能包含可序列化数据的唯一原因,即使它在一个应用程序中使用),所以我相信它适用于所有Android版本。

并且甚至不需要“alwaysRetainTaskState” - 如果您快速返回任务,系统将引导您进入活动B,即使默认为“false”值(根据http://developer.android.com/guide/topics/manifest/activity-element.html#always,系统将仅重置任务状态“如果用户没有访问任务一段时间,例如30分钟“)。