Android活动流程FLAG_ACTIVITY_CLEAR_TOP

时间:2013-08-06 21:59:44

标签: android android-activity

如果我有一个活动A启动活动B,它启动一个不同的活动A实例,我想回到之前的活动A(后堆栈中的第一个),所以我尝试使用意图标志FLAG_ACTIVITY_CLEAR_TOP,但当然这将顶级活动识别为正在运行的实例而不是第一个。如何摆脱活动A&的第二个实例活动B将我的会话恢复到第一个活动A?

A - > B - > A - >回到第一个A并完成第二个A&乙

我的目标是API级别10。

3 个答案:

答案 0 :(得分:1)

当活动B启动活动A的第二个实例时,您可以尝试设置FLAG_ACTIVITY_NO_HISTORY。不保证,但它可能有效。

当然,如果活动B正在合作,你可以从B可识别的第二个A实例返回一个状态并立即完成()。如果你有A-> B-> C-A,那么这并没有真正解决问题。

答案 1 :(得分:1)

试试这些标志:

addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK );

来自FLAG_ACTIVITY_CLEAR_TASK的文档:

  

...此标志将导致在活动开始之前清除与活动关联的任何现有任务。也就是说,活动成为其他空任务的新根,任何旧活动都已完成。这只能与FLAG_ACTIVITY_NEW_TASK一起使用。

请注意,它不仅会清除活动,还会创建一个全新的任务。例如,如果活动A不是您的“家庭”活动,这可能不是理想的。

答案 2 :(得分:0)

您可以尝试设置标志FLAG_ACTIVITY_SINGLE_TOP。否则,您需要自己监控您的活动,并在需要时路由到需要的地方。