gpt4 book ai didi

android - Intent.FLAG_ACTIVITY_CLEAR_TOP 和 Intent.FLAG_ACTIVITY_CLEAR_TOP 有区别吗? Intent .FLAG_ACTIVITY_SINGLE_TOP

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:40 27 4
gpt4 key购买 nike

我想知道,2个代码有什么区别?

newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);

newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

FLAG_ACTIVITY_CLEAR_TOP

If set, and the activity being launched is already running in the current task, then instead of launching a new instance of that activity, all of the other activities on top of it will be closed and this Intent will be delivered to the (now on top) old activity as a new Intent.

FLAG_ACTIVITY_SINGLE_TOP

If set, the activity will not be launched if it is already running at the top of the history stack.

我的理解是

  • FLAG_ACTIVITY_CLEAR_TOP - 清除顶部的所有 Activity,并防止在同一任务堆栈中出现超过 1 个相同 Activity 的实例。
  • FLAG_ACTIVITY_SINGLE_TOP - 防止同一 Activity 在同一任务堆栈中出现多个实例。

如果我的理解是正确的,Intent.FLAG_ACTIVITY_NEW_TASK | 不是吗? Intent .FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP 似乎多余?

我们可以只写 Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP?

最佳答案

FLAG_ACTIVITY_CLEAR_TOP 将创建一个新的 Activity 并关闭顶部的其他 Activity。
FLAG_ACTIVITY_SINGLE_TOP 将打开/重新打开该 Activity ,具体取决于它是否已经启动。
新的 Intent 将在 onNewIntent 方法中接收,在这两种情况下,但第一个会破坏其他 Activity 。我们需要想象有一个堆栈
该堆栈由您开始 Activity 的顺序形成。想想那种情况。启动Activity A,然后启动Activity B,然后是Activity C
堆栈将是这样的:
_ Activity C
_ Activity B
_ Activity A
然后,如果您使用 FLAG_ACTIVITY_CLEAR_TOP 启动 Activity AActivity A 之上的所有 Activity 都将关闭,并且将交付 Intent onNewIntent.

关于android - Intent.FLAG_ACTIVITY_CLEAR_TOP 和 Intent.FLAG_ACTIVITY_CLEAR_TOP 有区别吗? Intent .FLAG_ACTIVITY_SINGLE_TOP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28884819/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com