无法在一个intent中同时设置FLAG_ACTIVITY_SINGLE_TOP和FLAG_ACTIVITY_CLEAR_TOP?

时间:2011-04-11 13:56:31

标签: android android-intent activity-stack

我正在使用标记FLAG_ACTIVITY_SINGLE_TOPFLAG_ACTIVITY_CLEAR_TOP来回到之前的“标准”活动。我使用FLAG_ACTIVITY_SINGLE_TOP来阻止重新创建新实例。但我发现标志FLAG_ACTIVITY_SINGLE_TOP被忽略,活动结束并重新创建。

  • 以下是我在docs中找到的内容。 FLAG_ACTIVITY_CLEAR_TOP:它表示您可以在使用FLAG_ACTIVITY_SINGLE_TOP时添加FLAG_ACTIVITY_CLEAR_TOP以防止“完成 - 重新创建”。

  • 这是另一个文档。 FLAG_ACTIVITY_CLEAR_TOP

      

    注意:如果指定活动的启动模式是“标准”,它也会从堆栈中删除,并在其位置启动一个新实例来处理传入的意图。这是因为当启动模式为“标准”时,总是为新意图创建一个新实例。

我是否误解了第一份文件?

3 个答案:

答案 0 :(得分:5)

文档表明您需要设置FLAG_ACTIVITY_CLEAR_TOP。但实际上你必须设置两者以防止再次创建活动。

在我的案例中,这就是诀窍:(主要是我想要返回的活动)

  Intent tabIntent = new Intent(this, Main.class);
  tabIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
  startActivity(tabIntent);

答案 1 :(得分:2)

答案 2 :(得分:0)

检查一下。
        Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_SINGLE_TOP)