您可以使用FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_SINGLE_TOP执行此操作。
您需要将 A 作为新 Intent 启动,但在调用之前设置这两个标志startActivity
Clear Top 导致 A 顶部的所有活动都被清除。
Single Top 导致意图被传递给 A 的onNewIntent
方法,而不是销毁和重新创建 A。
从文档:
如果设置,并且正在启动的活动已经在当前任务中运行,那么不会启动该活动的新实例,而是关闭它上面的所有其他活动,并且此 Intent 将被传递到(现在顶部)作为新意图的旧活动。例如,考虑一个由以下活动组成的任务:A、B、C、D。如果 D 调用 startActivity() 并带有一个解析为活动 B 的组件的 Intent,那么 C 和 D 将完成并且 B 接收给定的 Intent ,导致堆栈现在为:A,B。上面示例中当前运行的活动 B 实例将在其 onNewIntent() 方法中接收您在此处开始的新意图,或者自身完成并以新意图重新启动. 如果它已将其启动模式声明为“多重” (默认)并且您没有在同一意图中设置 FLAG_ACTIVITY_SINGLE_TOP,那么它将完成并重新创建;对于所有其他启动模式,或者如果设置了 FLAG_ACTIVITY_SINGLE_TOP,则此 Intent 将被传递到当前实例的 onNewIntent()。这种启动模式也可以与 FLAG_ACTIVITY_NEW_TASK 结合使用,效果很好:如果用于启动任务的根活动,它将将该任务的任何当前正在运行的实例带到前台,然后将其清除为根状态。这尤其有用,例如,当从通知管理器启动活动时。有关任务的更多信息,请参阅任务和返回堆栈。对于所有其他启动模式,或者如果设置了 FLAG_ACTIVITY_SINGLE_TOP,则此 Intent 将被传递到当前实例的 onNewIntent()。这种启动模式也可以与 FLAG_ACTIVITY_NEW_TASK 结合使用,效果很好:如果用于启动任务的根活动,它将将该任务的任何当前正在运行的实例带到前台,然后将其清除为根状态。这尤其有用,例如,当从通知管理器启动活动时。有关任务的更多信息,请参阅任务和返回堆栈。对于所有其他启动模式,或者如果设置了 FLAG_ACTIVITY_SINGLE_TOP,则此 Intent 将被传递到当前实例的 onNewIntent()。这种启动模式也可以与 FLAG_ACTIVITY_NEW_TASK 结合使用,效果很好:如果用于启动任务的根活动,它将将该任务的任何当前正在运行的实例带到前台,然后将其清除为根状态。这尤其有用,例如,当从通知管理器启动活动时。有关任务的更多信息,请参阅任务和返回堆栈。这尤其有用,例如,当从通知管理器启动活动时。有关任务的更多信息,请参阅任务和返回堆栈。这尤其有用,例如,当从通知管理器启动活动时。有关任务的更多信息,请参阅任务和返回堆栈。