Android SingleTask活动无法返回结果?

Android SingleTask活动无法返回结果?,android,android-activity,Android,Android Activity,我遇到了非常奇怪的Android行为 我有两个活动,A和B。A以startActivityForResult开始B,然后检查B的结果代码。它可以是RESULT\u OK、RESULT\u CANCELLED或RESULT\u FIRSTUSER。不管我怎么努力,每当我从B返回RESULT\u FIRSTUSER时,一个锯RESULT\u取消了 出于绝望,我想“可能是因为B是一个单任务活动”,所以我修改了清单并删除了SingleTask定义。这已经起作用了,现在RESULT\u FIRSTUSER

我遇到了非常奇怪的Android行为

我有两个活动,A和B。A以
startActivityForResult
开始B,然后检查B的结果代码。它可以是
RESULT\u OK
RESULT\u CANCELLED
RESULT\u FIRSTUSER
。不管我怎么努力,每当我从B返回
RESULT\u FIRSTUSER
时,一个锯
RESULT\u取消了

出于绝望,我想“可能是因为B是一个单任务活动”,所以我修改了清单并删除了
SingleTask
定义。这已经起作用了,现在
RESULT\u FIRSTUSER
将返回到一个正确的位置


为什么?

只有在正在启动的活动与启动活动处于同一任务中时,startActivityForResult才会起作用。官方文档(位于,int,android.os.Bundle)

请注意,此方法应仅用于定义为返回结果的意图协议。在其他协议(如ACTION_MAIN或ACTION_VIEW)中,您可能无法获得预期的结果。例如,如果您正在启动的活动使用singleTask启动模式,它将不会在您的任务中运行,因此您将立即收到取消结果


startActivityForResult仅在正在启动的活动与启动活动处于同一任务中时才起作用。官方文档(位于,int,android.os.Bundle)

请注意,此方法应仅用于定义为返回结果的意图协议。在其他协议(如ACTION_MAIN或ACTION_VIEW)中,您可能无法获得预期的结果。例如,如果您正在启动的活动使用singleTask启动模式,它将不会在您的任务中运行,因此您将立即收到取消结果


这也解释了为什么我看到我的活动B也开始了两次!这也解释了为什么我看到我的活动B也开始了两次!