美文网首页
Activity - 管理任务(4) 定义启动模式 - 使用 I

Activity - 管理任务(4) 定义启动模式 - 使用 I

作者: 行走中的3卡 | 来源:发表于2022-12-21 19:33 被阅读0次

启动 Activity 时,您可以在传送给 startActivity() 的 intent 中添加相应的标记来修改 Activity 与其任务的默认关联**。
可以使用以下标记来修改默认行为:

1. FLAG_ACTIVITY_NEW_TASK

新任务中启动 Activity。
如果现在启动的 Activity 已经有任务在运行,则系统会将该任务转到前台恢复其最后的状态,
而 Activity 将在 onNewIntent() 中收到新的 intent。
这与上一节中介绍的 "singleTask" launchMode 值产生的行为相同。

2. FLAG_ACTIVITY_SINGLE_TOP

如果要启动的 Activity 是当前 Activity(即位于返回堆栈顶部的 Activity),
则现有实例会收到对 onNewIntent() 的调用,而不会创建 Activity 的新实例。
这与上一节中介绍的 "singleTop" launchMode 值产生的行为相同。

3. FLAG_ACTIVITY_CLEAR_TOP

如果要启动的 Activity 已经当前任务中运行,则不会启动该 Activity 的新实例,
而是会销毁位于它之上的所有其他 Activity,
并通过 onNewIntent() 将此 intent 传送给它的已恢复实例(现在位于堆栈顶部)。
launchMode 属性没有可产生此行为的值。

FLAG_ACTIVITY_CLEAR_TOP 最常与 FLAG_ACTIVITY_NEW_TASK 结合使用
将这两个标记结合使用,可以查找其他任务中的现有 Activity,并将其置于能够响应 intent 的位置。

注意:如果指定 Activity 的启动模式为 "standard",系统也会将其从堆栈中移除,
并在它的位置启动一个新实例来处理传入的 intent。
这是因为当启动模式为 "standard" 时,始终会为新 intent 创建新的实例。

参考文献:
https://developer.android.com/guide/components/activities/tasks-and-back-stack?hl=zh-cn#IntentFlagsForTasks

相关文章

网友评论

      本文标题:Activity - 管理任务(4) 定义启动模式 - 使用 I

      本文链接:https://www.haomeiwen.com/subject/vbbyqdtx.html