繁体   English   中英

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

[英]in Android if OS kills my application, will getIntent() return the Intent with the same extras?

当然,我的应用程序恢复后。

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

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

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

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

好吧,你可以自己做一个简单的实验,在开发者选项中打开“不要保持活动”标志

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

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

Sobear,

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

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

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

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

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

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

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

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

FuzzicalLogic

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM