[英]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,
答案是“不,不是”。 这有很多不同的原因。 首先,让我们重新讨论一个活动是如何运作的(我知道你知道这一点,但我说明了一点)。
为了启动一个Activity,创建一个Intent。 此意图可以来自主屏幕上的应用程序图标,当前正在运行的应用程序组件,甚至来自其他应用程序的其他组件,前提是他们有权启动它。
意图被发送到Android,Android尝试通过将其发送到应用程序来解决它,或者通过查询用户是否无法自行解决。
当应用程序启动时,它会保留启动它的Intent,以允许进行安全检查,回溯跟踪等。它允许开发人员和用户确保这是他们真正想做的事情...这个意图保留在整个Activity的生命周期以及Activity将其传递给的任何其他内容。
用户做了一些事情,分心并转移到其他活动。 应用程序仍在继续,直到内存不足。
内存变低,Android杀死了Activity。 活动失去了意图(除非以某种方式保存)。
用户看到活动已经死亡并决定重新启动。 Android创建一个新的Intent来启动Activity - >返回步骤1。
由于需要新的Intent才能重新启动应用程序,因此旧的intent不再键入Activity。 至于它是否被收集到垃圾中,我不确定何时发生这种情况,但是无法访问。 如果您关心存储Extras,那么只有一种方法可以做到这一点(当然,有几种可能的实现方式)。 必须以某种方式存储Intent和Extras。 这不会影响getIntent()函数,但您可以创建一个基于它的个人getOriginalIntent()函数。 从那里,有许多选项...例如,您可以使用原始意图重新启动活动,然后getIntent()将工作...
FuzzicalLogic
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.