当我的申请恢复后,当然。
或者我必须将所有内容存储在onSaveInstanceState()?
答案 0 :(得分:9)
这个对话似乎回答了它:http://groups.google.com/group/android-developers/browse_thread/thread/f47af26b696af2e2。查找以“是和否”开头的帖子以及之前的一些帖子。
答案是肯定的:是的,在操作系统重新启动活动后,getIntent()将返回一个与原始相同的额外内容的Intent。
尽管如此,如果某位Android专家能够证实,我很高兴听到这个消息。 :)
答案 1 :(得分:0)
Sobear,
答案是“不,不是”。这有很多不同的原因。首先,让我们重新讨论一个活动是如何运作的(我知道你知道这一点,但我说明了一点)。
为了启动一个Activity,会创建一个Intent。此意图可以来自主屏幕上的应用程序图标,当前正在运行的应用程序组件,甚至来自其他应用程序的其他组件,前提是他们有权启动它。
Intent被发送到Android,Android尝试通过将其发送到应用程序来解决它,或者通过查询用户是否无法自行解决。
当应用程序启动时,它会保留启动它的Intent以允许安全检查,反向跟踪等。它允许开发人员和用户确保这是他们真正想要做的事情。 。此Intent保留在Activity的整个生命周期以及Activity传递给它的任何其他内容。
用户做了一些事情,分心并转移到其他活动。该应用程序仍在继续,直到内存不足。
内存不足,Android会杀死活动。活动失去了意图(除非以某种方式保存)。
用户看到活动已经死亡并决定重新启动。 Android创建一个新的Intent来启动Activity - >回到第1步。
由于需要新的Intent来重新启动应用程序,因此旧的intent不再键入Activity。至于它是否被收集到垃圾中,我不确定何时发生这种情况,但是无法访问。如果您关心存储Extras,那么只有一种方法可以做到这一点(当然,有几种可能的实现方式)。必须以某种方式存储Intent和Extras。这不会影响getIntent()函数,但您可以创建一个基于它的个人getOriginalIntent()函数。从那里,有许多选项...例如,您可以使用原始意图重新启动活动,然后getIntent()将起作用...
FuzzicalLogic
答案 2 :(得分:0)
嗯,你总是可以自己做一个简单的实验,通过转动"不要保持活动"标记,在开发人员选项中。
如果该标志开启,则每当您退出应用程序(例如,单击主页按钮)时,操作系统将终止该活动,当您返回应用程序时,将重新创建上一个活动。
我的实验告诉我,重新开始活动后,getIntent()将始终拥有相同的数据。