我正在使用标记FLAG_ACTIVITY_SINGLE_TOP
和FLAG_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:
注意:如果指定活动的启动模式是“标准”,它也会从堆栈中删除,并在其位置启动一个新实例来处理传入的意图。这是因为当启动模式为“标准”时,总是为新意图创建一个新实例。
我是否误解了第一份文件?
答案 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)