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启动。
➡️

继续阅读