0

问题标题可能不够清楚。它解决了应用程序在资源不足的情况下被Android“杀死”后,将结果从子活动传递给父活动的问题,然后在用户返回该应用程序时自动恢复。

假设活动 A 使用 调用活动startActivityForResult()B。当应用程序执行上下文在 B 中时,应用程序进入后台并在一段时间后被系统卸载。稍后,用户切换回应用程序,并且活动 B 恢复没有问题。唯一的问题是 A 目前在 Android 的后台堆栈中不存在,并且当用户关闭 B(finish()伴随适当的setResult()调用)时,A 不会收到结果。A不是onActivityResult()事件,而是onCreate()从启动链接收和其他事件。

所以问题是如何在“杀死”状态后恢复的应用程序中的活动之间传递结果?

更新:

尽管@fedepaol 提供了一个指向谷歌群组的链接,有人在其中写了onActivityResult应该在有问题的情况下调用的链接,但我无法让它工作。我还应该注意,谷歌群组中该问题的 OP 也没有解决问题。我也在 SO 上发现了一个类似的问题 - onActivityResult 在进程被杀死后不被调用- 也没有解决方案。

我仔细检查了我的代码,不明白为什么它不起作用。在正常情况下,会调用被覆盖的方法。如果后台的activity一一还原,则不会。

4

1 回答 1

1

我不确定您onActivityResult是否会被调用。根据我的理解(可能不正确),操作系统应该为您提供所有工具来使用onCreate/onRestoreInstanceState方法重建 A 的状态。在他们之后,我希望使用之前的结果调用 onActivityResult。

Dianne Hackborn的回答也证实了这一点。

同样,您应该在返回结果之前处理 B 被杀死的情况。

于 2012-12-25T21:56:12.063 回答