如果应用程序已还原,如何从活动中获取结果

时间:2012-12-25 21:46:48

标签: android android-activity back-stack

问题标题可能不够明确。它解决了在低资源条件下Android被应用程序“杀死”后将结果从子活动传递到父活动的问题,然后在用户返回此应用程序时自动恢复。

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

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

更新

尽管@fedepaol提供了一个指向google群组的链接,但有人写道,onActivityResult应该在相关情况下调用,我无法让它工作。我还应该注意到谷歌小组中那个问题的OP也没有解决问题。此外,我在SO上发现了一个类似的问题 - onActivityResult is not called after process is killed - 也没有解决方案。

我仔细检查了我的代码,不明白为什么它不起作用。在正常情况下,调用重写方法。如果后台堆栈的活动逐个恢复,则不会。

1 个答案:

答案 0 :(得分:1)

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

Dianne Hackborn this answer也证实了这一点。

你也应该在返回结果之前处理B被杀的情况。