OnActivityResult 在 Android 中被调用两次

OnActivityResult getting called twice in Android

我使用此代码启动了 activity:

 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 小时的调试,看来

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

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

除了 etherton 的回答,还要检查你的 activity 是否声明为 singleTask

打开 AndroidManifest.xml 并检查您的 呼叫 activityandroid:launchMode="singleTask"。删除此行,它将按预期工作。

注意:如果你真的想要你的activity作为singleTask那么你必须自己处理你的回调。