如何清除完整的后栈(以及可能的解决方案)

时间:2012-03-19 15:47:24

标签: android android-activity

我有三个活动A,B和C.
A是我申请的主要活动 A和C也可以从选项菜单启动,B从A开始 我想要以下行为:

  1. 应用程序以A开头:后栈是{A}
  2. 来自A,我导航到B:后面的堆栈是{A,B}
  3. 从选项菜单中,我启动C:后退堆栈是{C}
  4. 1和2是微不足道的,但我没有成功让3人工作。

    我尝试了很多FLAG_ACTIVITY组合,但没有成功 而且我的印象是这是不可能的。

    我正在考虑创建一个仅用于启动另一个活动的DummyRoot活动(要在Intent.getExtras()中传递要启动的实际活动名称)。我可以将此DummyRoot活动赋予FLAG_ACTIVITY_CLEAR_TOP 通过这样做,我会得到

    1. 应用程序从DummyRoot(A)开始:后栈是{DummyRoot,A}
    2. 来自A,我导航到B:后面的堆栈是{DummyRoot,A,B}
    3. 从选项菜单中,我启动DummyRoot(C):后台堆栈是{DummyRoot,C}
    4. 您是否预见到这种方法存在问题? 这是首先需要还是可以以更优雅的方式清理后堆?

1 个答案:

答案 0 :(得分:0)

所以当您在C中按回时,您希望应用程序退出?如果是这样,您将需要在清单中使用Flags以及使用Intent启动Activity时。这里的组合将允许您清除当前任务,然后使用其中的新活动启动一个新任务。它似乎不是一个有效的用户体验,但应该做到这一点。请阅读文档中的FLAGS,了解有关它们实际操作的更多信息。