Android中Activity启动的模式

在 Android 开发中,Activity 的启动模式(Launch Mode)定义了当启动一个 Activity 时,系统会如何处理它的实例。不同的启动模式可以影响 Activity 在任务栈中的管理方式,对用户的使用体验产生直接影响。下面详细介绍四种主要的启动模式:

1. standard 模式

  • 描述:这是默认的启动模式,每次启动 Activity 时都会创建一个新的实例,不管任务栈中是否已经存在该 Activity 的实例。
  • 适用场景:适用于不需要重用的界面,每次启动时都希望展示新的内容。
xml 复制代码
<activity android:name=".MyActivity"
    android:launchMode="standard" />

示例

kotlin 复制代码
// 每次调用都会启动一个新的实例
val intent = Intent(this, MyActivity::class.java)
startActivity(intent)
  • 栈行为:每次调用 startActivity(),都会将新的 Activity 放在栈顶。多个实例可以同时存在。

2. singleTop 模式

  • 描述:如果新启动的 Activity 已经位于任务栈的栈顶,则不会创建新的实例,而是复用现有实例。如果不在栈顶,则会创建新实例。
  • 适用场景:适合在某些情况下避免重复启动同一个 Activity,比如点击通知多次打开同一界面。
xml 复制代码
<activity android:name=".MyActivity"
    android:launchMode="singleTop" />

示例

kotlin 复制代码
// 如果MyActivity已经在栈顶,那么不会创建新的实例,而是复用已有的实例
val intent = Intent(this, MyActivity::class.java)
startActivity(intent)
  • 栈行为:当该 Activity 已经在栈顶时,不会创建新实例,而是调用现有实例的 onNewIntent() 方法。

3. singleTask 模式

  • 描述:如果在任何任务栈中已经存在该 Activity 的实例,则不会创建新的实例,而是将其带到前台,并清除其上方的所有其他 Activity。
  • 适用场景:适合需要独占任务栈的 Activity,如主页或单一功能页面。
xml 复制代码
<activity android:name=".MyActivity"
    android:launchMode="singleTask" />

示例

kotlin 复制代码
// 启动MyActivity时,如果已存在该实例,会清除其上方所有Activity
val intent = Intent(this, MyActivity::class.java)
startActivity(intent)
  • 栈行为:若栈中已有该 Activity 实例,则直接将该实例带到前台并清除其上方的所有 Activity。如果不存在,则创建新的实例。

4. singleInstance 模式

  • 描述:此模式会为该 Activity 创建一个专属的任务栈。在任何任务中只能有一个实例存在,每次启动时都会复用该实例。
  • 适用场景:用于需要独占一个任务栈的 Activity,通常用于特殊功能,如浮动的 Activity 或全屏显示的 Activity。
xml 复制代码
<activity android:name=".MyActivity"
    android:launchMode="singleInstance" />

示例

kotlin 复制代码
// 启动MyActivity时,它会运行在独立的任务栈中,且不会创建新实例
val intent = Intent(this, MyActivity::class.java)
startActivity(intent)
  • 栈行为 :该 Activity 始终处于独立的任务栈中,任何启动请求都会直接复用该实例,不会创建新的实例。其他应用也可以启动这个 Activity,但只能通过其单一实例。

小结

启动模式 新实例条件 复用条件
standard 每次启动都会创建新的实例 无法复用
singleTop 栈顶没有实例时创建新的实例 栈顶已有实例时复用,调用 onNewIntent()
singleTask 任务栈中不存在实例时创建新的实例 任务栈中存在时,复用并清空其上方 Activity
singleInstance 独立栈中不存在实例时创建 任务栈中存在时直接复用

以上是 Android 中四种 Activity 启动模式的详细说明,根据需要选择合适的模式来优化用户的导航体验和应用的任务管理。

相关推荐
敲代码的瓦龙2 小时前
Android?Activity!!!
android
重生之我在安卓搞音频3 小时前
二、Android 音频框架
android·音视频
studyForMokey4 小时前
【Android面试】Java专题 todo
android·java·面试
代码改善世界4 小时前
【MATLAB初阶】矩阵操作(二):矩阵的运算
android·matlab·矩阵
九皇叔叔4 小时前
MySQL实操指南:复制表及数据复制全解析
android·数据库·mysql
梦想不只是梦与想4 小时前
flutter 与 Android iOS 通信?以及实现原理(一)
android·flutter·ios·methodchannel·eventchannel·basicmessage
Lambert_lin05 小时前
Android grade9.0 之后 自定义apk 名称
android·kotlin
fengci.5 小时前
ctfshow其他(web408-web432)
android·开发语言·前端·学习·php
Kapaseker5 小时前
“点击显示全文” — Compose 实现
android·kotlin
lxysbly6 小时前
安卓土星ss模拟器下载(支持中文、金手指)
android