Android 将活动重新排序到前端并开始策略性纠正结果
活动A使用startActivityForResult启动B,B使用startActivity启动C。之后,活动堆栈是一个B C 现在假设C使用FLAG_ACTIVITY_REORDER_TO_FRONT FLAG对B进行startActivity调用,那么活动堆栈将成为C B 我的问题是,现在,如果B自行完成,是否会因为B退出而调用A中的onActivityResult()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
谢谢。根据以下文档判断: 当您的活动完成时调用此选项 应该关闭。这个 ActivityResult将传播回 是谁通过 onActivityResult() 这让我相信,即使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第一次给出的结果。确保标记正确的答案,它鼓励别人帮助你。