- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
标志 FLAG_ACTIVITY_CLEAR_TOP
找到包含 Activity X 的任务并清除顶部以使 X 进入其恢复状态。标记 FLAG_ACTIVITY_SINGLE_TOP
只会在顶部保留一个 X 实例。因此,如果我已经在使用 CLEAR_TOP
,我永远不需要包含 SINGLE_TOP
:那是因为 CLEAR_TOP
的行为包含 SINGLE_TOP
的行为。那么为什么这么多示例代码将两者一起包括在内呢?是因为那些开发人员不了解 CLEAR_TOP
的全部功能吗?同样,我在网上看到的几乎每个示例都将两者结合在一起。为什么要裁员?
例如,如果我在任务 W->X->Y->Z
上为 X 调用 CLEAR_TOP
,那么我会得到 W->X
。另一方面,如果我在任务 W->X->Y->Z
上为 X 调用 SINGLE_TOP,我最终会得到 W->X->Y-> Z->X
,如果我为 Z 调用它,我会得到 W->X->Y->Z
。所以实际上 CLEAR_TOP
没有给等式添加任何内容:这就像将 0 添加到其他值。
最佳答案
CLEAR_TOP
的行为是不同的,这取决于 Activity 是否是 singleTop
Activity 或是否还提供了标志 SINGLE_TOP
。
我们首先假设 Activity 具有标准启动模式(不是 singleTop
)。如果您使用 CLEAR_TOP
标志而不使用 SINGLE_TOP
,Android 会执行以下操作:
onCreate()
。相反,我们假设 Activity 仍然具有标准启动模式(不是 singleTop
)。如果您使用 CLEAR_TOP
标志连同 SINGLE_TOP
标志,Android 会执行以下操作:
onNewIntent()
,传递在 startActivity()
调用中使用的 Intent
。 如您所见,行为有所不同。
注意:如果目标 Activity 在 list 中声明为 launchMode="singleTop"
,则使用 CLEAR_TOP
的行为应该与您还指定的行为相同SINGLE_TOP
。但是,Android 中有一些与此相关的错误(我暂时找不到链接)。因此,您不应依赖 launchMode
设置,但如果您不希望重新创建目标 Activity 的现有实例,请始终指定 SINGLE_TOP
标志。
关于android - 为什么人们喜欢在 android 中配对 CLEAR_TOP 和 SINGLE_TOP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31926315/
在我的导航中,可以产生以下 Activity 序列:A,B,C,B,C,B,C, ..., D。 D Activity 包含后退按钮的覆盖方法,该方法使用 Intent.FLAG_ACTIVITY_C
我在android中执行与 Intent 标志相关的家庭任务,并创建了10个 Activity ,每个 Activity 随后调用下一个 Activity (MainActivity打开activit
我有一个由 4 个深度级别组成的层次结构。我的个人资料具有第 2 级层次结构,这意味着在个人资料中按下后退必须始终将用户返回到第 1 层次结构级别。 我的问题是指向个人资料的链接在所有级别都可用;因此
doneButton.setOnClickListener(new View.OnClickListener() { @Override public void onC
标志 FLAG_ACTIVITY_CLEAR_TOP 找到包含 Activity X 的任务并清除顶部以使 X 进入其恢复状态。标记 FLAG_ACTIVITY_SINGLE_TOP 只会在顶部保留一
我有一个几乎完成的应用程序,其 Activity 结构非常重要。有与此应用程序关联的推送通知,无论应用程序是前台/后台/非 Activity 状态,选择通知条目都应该启动特定的 Activity 。
使用 Intent 标志 "FLAG_ACTIVITY_NEW_TASK" & "FLAG_ACTIVITY_CLEAR_TOP" 和 launchMode="singleTask" 有什么区别>?以
我是一名优秀的程序员,十分优秀!