了解Intent.FLAG_ACTIVITY_CLEAR_TOP

时间:2013-10-01 11:11:49

标签: android android-intent

enter image description here

根据上面显示的图像,我有一些疑问。要求按顺序阅读每个步骤: -

  1. 每个区块都是Android活动
  2. 箭头表示堆叠方向 - 打开活动的顺序(A在首次启动应用时启动)
  3. 此时用户达到 ACTIVITY F 并想要打开活动Z (我们正在使用Flag_Activity_clear_top)。
  4. 当用户想要打开活动D 时, ACtivity Z 之后。
  5. ****我们在此步骤中的要求是 - 当活动D打开并且用户按下后退按钮时 - 我希望用户应该重定向回到 ACTIVITY C ,之后 ACTIVITY B 等等.. ** **

    目前,当我们从活动D (来自Z)之后回来时,我们将被重定向到活动Z

2 个答案:

答案 0 :(得分:5)

CLEAR_TOP不好,因为如果你以这种方式打开一个活动,它将删除整个堆栈,这听起来不像你想要的那样。

试试这个: 当启动活动E(来自D),F(来自E)和Z(来自F)时,使用标志“FLAG_ACTIVITY_NO_HISTORY”进行操作。此标志将阻止新活动出现在后台堆栈中。

请记住,您以这种方式打开的任何活动都不会在后台堆栈中注册。所以,如果你回来的时候(例如)你在F中,那么它将返回到D.

希望这有帮助!

答案 1 :(得分:0)

- >任何人都面临同样的问题。尝试发送意图以及标记' FLAG_ACTIVITY_CLEAR_TOP'和' FLAG_ACTIVITY_SINGLE_TOP'。

- >文档中提到的示例:link

  

考虑一个由活动组成的任务:A,B,C,D。如果D调用带有解析为活动B组件的Intent的startActivity(),则C和D将完成,B接收sentIntent,导致堆栈现在为:A,B。