OnActivityResult在Android中被调用两次

时间:2015-08-26 21:56:47

标签: android activity-lifecycle

我使用此代码启动了一项活动:

 Intent intent = new Intent(this, OneTimeActivity.class);
 intent.putExtra(Constants.HOST_KEY, host);
 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
 startActivityForResult(intent, 1000);

由于某种原因,我的OnActivityResult()被调用了两次。有一次,当我第一次调用startActivityForResult时,一次当结果实际结束时。同样奇怪的是,Intent数据始终为null,resultCode始终为0

为什么会这样?我不应该只从OnActivityResult()获得一次回调一次吗?我不应该得到我在setResult()中指定的结果代码吗?

2 个答案:

答案 0 :(得分:2)

经过大约2个小时的调试,似乎

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

是问题所在。一旦我删除了一切按预期工作,我想这是有道理的。我无法清除后台堆栈并期望结果正确返回到我刚刚清除的后台堆栈。

答案 1 :(得分:0)

除了 etherton的回答之外,还要检查您的活动是否被声明为singleTask

打开AndroidManifest.xml并检查被叫活动android:launchMode="singleTask"。删除此行,它将按预期工作。

注意:如果您真的希望自己的活动为singleTask,那么您必须自己处理回调。