Android | launchMode启动模式详解

💡 原文中文,约6000字,阅读约需15分钟。
📝

内容提要

本文讨论了Android中Activity的任务栈和启动模式,包括任务栈的管理和启动模式的五种类型。还介绍了任务栈亲和性的修改和常用的Intent.FLAG标志位。最后提到了FLAG_ACTIVITY_REORDER_TO_FRONT和FLAG_ACTIVITY_CLEAR_TASK标志位的使用。

🎯

关键要点

  • 任务栈管理是Android中Activity的重要概念,涉及Activity的启动顺序和返回操作。

  • 可以通过manifest文件和Intent.FLAG动态设置任务栈的行为。

  • Activity的launchMode属性有五种类型:standard、singleTop、singleTask、singleInstance和singleInstancePerTask。

  • taskAffinity用于修改Activity之间的亲和性,决定它们属于哪个任务栈。

  • allowTaskReparenting属性允许Activity在特定条件下从一个任务栈移动到另一个任务栈。

  • 常用的Intent.FLAG标志位包括FLAG_ACTIVITY_NEW_TASK、FLAG_ACTIVITY_CLEAR_TOP、FLAG_ACTIVITY_SINGLE_TOP、FLAG_ACTIVITY_REORDER_TO_FRONT和FLAG_ACTIVITY_CLEAR_TASK。

  • FLAG_ACTIVITY_NEW_TASK用于在新任务栈中启动Activity,通常与taskAffinity结合使用。

  • FLAG_ACTIVITY_CLEAR_TOP会销毁目标Activity及其上面的所有Activity,并重新创建目标Activity。

  • FLAG_ACTIVITY_REORDER_TO_FRONT将已存在的Activity调到前面,并调用其onNewIntent()方法。

  • FLAG_ACTIVITY_CLEAR_TASK会清空任务栈中的Activity,并将目标Activity作为根Activity启动。

延伸问答

Android中的launchMode有哪些类型?

Android中的launchMode有五种类型:standard、singleTop、singleTask、singleInstance和singleInstancePerTask。

如何通过manifest文件设置Activity的任务栈行为?

可以通过manifest文件中的<activity>标签配置launchMode、taskAffinity、allowTaskReparenting等属性来设置任务栈行为。

FLAG_ACTIVITY_NEW_TASK标志位的作用是什么?

FLAG_ACTIVITY_NEW_TASK标志位用于在新任务栈中启动Activity,通常与taskAffinity结合使用。

什么是taskAffinity,它的作用是什么?

taskAffinity用于修改Activity之间的亲和性,决定它们属于哪个任务栈,默认情况下同一应用中的所有Activity具有相同的亲和性。

如何使用FLAG_ACTIVITY_CLEAR_TOP标志位?

FLAG_ACTIVITY_CLEAR_TOP会销毁目标Activity及其上面的所有Activity,并重新创建目标Activity,常用于返回到某个Activity时清理栈。

allowTaskReparenting属性的作用是什么?

allowTaskReparenting属性允许Activity在特定条件下从一个任务栈移动到另一个任务栈,前提是目标任务栈在前台。

🏷️

标签

➡️

继续阅读