问题标题可能不够明确。它解决了在低资源条件下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 - 也没有解决方案。
我仔细检查了我的代码,不明白为什么它不起作用。在正常情况下,调用重写方法。如果后台堆栈的活动逐个恢复,则不会。
答案 0 :(得分:1)
我不确定您的onActivityResult
是否会被调用。
根据我的理解(可能不正确),操作系统应该为您提供使用onCreate
/ onRestoreInstanceState
方法重建A状态的所有工具。在他们之后,我希望用之前的结果调用onActivityResult。
Dianne Hackborn this answer也证实了这一点。
你也应该在返回结果之前处理B被杀的情况。