重新创建的活动是不是记得启动它的原始意图?

Posted

技术标签:

【中文标题】重新创建的活动是不是记得启动它的原始意图?【英文标题】:Does a recreated activity remember the original intent started it?重新创建的活动是否记得启动它的原始意图? 【发布时间】:2015-08-21 17:29:45 【问题描述】:

在查看有关使用 onSaveInstanceState 的文档时,弹出了一个问题。

假设我正在使用一个包含多个 Activity 的应用,而现在我正处于一个由之前的某个 Activity 启动的特定 Activity。当前活动接受前一个活动的额外值。

如果我接到一个电话,然后导航回活动,它就会重新创建。但它会记住启动它的前一个活动的初衷吗?重新创建后是否能够从中获取额外的变量?

为了简化事情:

活动 A 启动活动 B(并将附加内容传递给它)。然后(在 B 中)有一个来电。 我回到应用程序,所以 B 被重新创建 - 我仍然能够从原始活动 A 中获得额外的东西吗?

【问题讨论】:

【参考方案1】:

是的,最简单的检查方法是在第二个活动运行时旋转屏幕,它将被销毁然后重新创建,您会注意到您仍然可以获得额外内容。自己试试看。

【讨论】:

【参考方案2】:

是的,这将是相同的意图。

另外澄清一下,当您离开活动 B 接听电话并返回时,活动 B 不一定会重新创建。只有当包含它的进程被杀死以回收资源时,它才会重新创建。经常发生的情况是,在您描述的场景中,Activity B 仍然存在。

有关类似讨论,请参阅: android - Is the intent preserved during activity recreation?

【讨论】:

以上是关于重新创建的活动是不是记得启动它的原始意图?的主要内容,如果未能解决你的问题,请参考以下文章

从通知意图启动活动时重新创建 Android ViewModel

在方向更改后重新创建活动之前更改意图包数据

前台服务内容意图不是恢复应用程序而是重新启动它

活动重新创建意图附加内容为空

将数据从通知发送到活动类而不重新启动意图

启动新意图后活动加载缓慢