当进程被杀死后,onActivityResult未被调用

5

我有一个主活动(Main)和另一个活动(Sub),通过以下方式从Main调用

startActivityForResult(new Intent(this, SubActivity.class), 25); 

当我在Sub应用程序时,如果我使用任务管理器或者adb shell kill <pid>命令结束进程,并重新打开应用程序,我会立即回到Sub应用程序。

在Sub应用程序中,我有这段代码来回调主活动:

setResult(RESULT_OK, data);
finish();

如果我没有杀死进程,我本应该在onActivityResult中收到requestCode(25)、resultCode(RESULT_OK)和数据。但是在这种情况下,我被带到了主活动,但onActivityResult未被调用。这是Android的工作方式吗(我不认为会是这样),还是我的方法有问题?
更新:这发生在我的Nexus One上,CyanogenMod 7.0.2,Android 2.3.3。我尝试使用模拟器API 10,Android 2.3.4,并且按预期工作,即在我杀死进程后仍然调用了onActivityResult

你的意思是“然而在这种情况下我被带到了主Activity,但onActivityResult方法没有被调用”,那么调用了什么呢? - woodshy
如果进程被杀死,Main活动的onActivityResult不会被调用。但是Main活动的onCreate、onStart等方法仍然像往常一样被调用。 - Randy Sugianto 'Yuku'
2个回答

0

我认为问题不在于为什么onActivityResult没有被调用,而是为什么当你杀死你的应用程序时第二个仍然存在。你是否在Main和Sub的生命周期方法中放置了Toast消息,以检查哪些方法被调用了?


不,我知道在进程被杀死后,Android会启动在进程被杀死之前正在运行的最后一个活动。是的,我编写日志来检查是否调用了onActivityResult。 - Randy Sugianto 'Yuku'

0

我曾经遇到同样的问题,我通过替换startActivityForResult功能并将结果存储到共享首选项中,并在onResume后加载它们来解决了这个问题。这里是完整解决方案的链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接