Android 将活动重新排序到前端并开始策略性纠正结果

Android 将活动重新排序到前端并开始策略性纠正结果,android,Android,活动A使用startActivityForResult启动B,B使用startActivity启动C。之后,活动堆栈是一个B C 现在假设C使用FLAG_ACTIVITY_REORDER_TO_FRONT FLAG对B进行startActivity调用,那么活动堆栈将成为C B 我的问题是,现在,如果B自行完成,是否会因为B退出而调用A中的onActivityResult() 谢谢。根据以下文档判断: 当您的活动完成时调用此选项 应该关闭。这个 ActivityResult将传播回 是谁通过 o

活动A使用startActivityForResult启动B,B使用startActivity启动C。之后,活动堆栈是一个B C

现在假设C使用FLAG_ACTIVITY_REORDER_TO_FRONT FLAG对B进行startActivity调用,那么活动堆栈将成为C B

我的问题是,现在,如果B自行完成,是否会因为B退出而调用A中的onActivityResult()


谢谢。

根据以下文档判断:

当您的活动完成时调用此选项 应该关闭。这个 ActivityResult将传播回 是谁通过 onActivityResult()

这让我相信,即使C介于两者之间,A也会得到B的结果

编辑-经过一些测试,我在这里发现了一些有趣的交互

记录一些日志后事件的顺序:

  • 一开始
  • B开始
  • C开始
  • B恢复(带旗子的活动带到前面)
  • B完成
  • C恢复(在B下)
  • C完成
  • A恢复并获得B的结果

  • 换句话说,A按预期得到B的结果,但它发生在C完成并恢复A之后。

    谢谢。你知道为什么C完成了吗?没有完成C的代码。我期望的最终堆栈状态是C。I手动完成C。关键是,除非你完成C(或以某种方式暴露A),否则A不会得到B的结果。我想知道如果C也用startActivityForResult启动B会发生什么。C和A都会得到B的结果吗?在B中调用setResult会有什么不同吗?事实上,在B中,FLAG_ACTIVITY_BRING_TO_FRONT不会更改getIntent()返回的内容。我曾尝试让C使用putExtra()发送一些数据,但在被带到前面的B中找不到这样的数据。我猜想,如果使用标志“ACTIVITY”调用B,那么B将不会注意到来自C的requestCode/responseCode_FRONT@JasonHanley只是为了将来参考其他任何人遇到这个问题,测试了这个问题,C将不会得到B的结果,即使它使用startActivityForResult调用B。只有实际启动B的活动才会得到结果。这导致了一些奇怪的行为,如果你去
    A->B->C->(重新排序)B(完成)->C->B(完成)->C(完成)->A
    ,C在B第一次完成时不会得到结果,但是C会得到B第二次给出的结果代码,A会得到B第一次给出的结果。确保标记正确的答案,它鼓励别人帮助你。