在Android中如果操作系统杀死我的应用程序,getIntent()会返回具有相同附加功能的Intent吗?

时间:2010-11-19 09:06:50

标签: android android-intent android-activity

当我的申请恢复后,当然。

或者我必须将所有内容存储在onSaveInstanceState()?

3 个答案:

答案 0 :(得分:9)

这个对话似乎回答了它:http://groups.google.com/group/android-developers/browse_thread/thread/f47af26b696af2e2。查找以“是和否”开头的帖子以及之前的一些帖子。

答案是肯定的:是的,在操作系统重新启动活动后,getIntent()将返回一个与原始相同的额外内容的Intent。

尽管如此,如果某位Android专家能够证实,我很高兴听到这个消息。 :)

答案 1 :(得分:0)

Sobear,

答案是“不,不是”。这有很多不同的原因。首先,让我们重新讨论一个活动是如何运作的(我知道你知道这一点,但我说明了一点)。

  1. 为了启动一个Activity,会创建一个Intent。此意图可以来自主屏幕上的应用程序图标,当前正在运行的应用程序组件,甚至来自其他应用程序的其他组件,前提是他们有权启动它。

  2. Intent被发送到Android,Android尝试通过将其发送到应用程序来解决它,或者通过查询用户是否无法自行解决。

  3. 当应用程序启动时,它会保留启动它的Intent以允许安全检查,反向跟踪等。它允许开发人员和用户确保这是他们真正想要做的事情。 。此Intent保留在Activity的整个生命周期以及Activity传递给它的任何其他内容。

  4. 用户做了一些事情,分心并转移到其他活动。该应用程序仍在继续,直到内存不足。

  5. 内存不足,Android会杀死活动。活动失去了意图(除非以某种方式保存)。

  6. 用户看到活动已经死亡并决定重新启动。 Android创建一个新的Intent来启动Activity - >回到第1步。

  7. 由于需要新的Intent来重新启动应用程序,因此旧的intent不再键入Activity。至于它是否被收集到垃圾中,我不确定何时发生这种情况,但是无法访问。如果您关心存储Extras,那么只有一种方法可以做到这一点(当然,有几种可能的实现方式)。必须以某种方式存储Intent和Extras。这不会影响getIntent()函数,但您可以创建一个基于它的个人getOriginalIntent()函数。从那里,有许多选项...例如,您可以使用原始意图重新启动活动,然后getIntent()将起作用...

    FuzzicalLogic

答案 2 :(得分:0)

嗯,你总是可以自己做一个简单的实验,通过转动"不要保持活动"标记,在开发人员选项中。

如果该标志开启,则每当您退出应用程序(例如,单击主页按钮)时,操作系统将终止该活动,当您返回应用程序时,将重新创建上一个活动。

我的实验告诉我,重新开始活动后,getIntent()将始终拥有相同的数据。

相关问题