Activity 启动模式总结

Android 中的 Activity 启动模式(Launch Mode)定义了当一个 Activity 被启动时,系统在任务栈中如何处理它的行为。

启动模式是任务栈中Activity的一种行为分类,在了解启动模式前,我们需要了解一下Activity的容器任务栈

1. 任务栈

  • 任务栈 是一组按照用户启动顺序排列的 Activity 实例,遵循 原则。

  • 每个任务栈通常代表一个用户正在执行的任务(Task)。

  • 默认情况下,一个 App 只有一个任务栈,多个 Activity 按顺序压入其中。

总结

任务栈是Activity的容器,遵循 后进先出(LIFO) 的原则,默认一个APP只有一个任务栈.开启一个Activity会放入对应的任务栈.

2.启动模式

Activity 的启动模式(Launch Mode)定义了当一个 Activity 被启动时,系统在任务栈中如何处理它的行为。

分类

  • standard 标准模式
  • singleTop 栈顶复用模式
  • singleTask 栈内复用模式
  • singleInstance 独立任务栈模式

2.1 standard(标准模式,默认)

  • 每次启动此Activity 都会创建一个Activity对象 加入任务栈中
  • 执行onCreate()等创建流程方法
ini 复制代码
<activity android:name=".MyActivity"
          android:launchMode="standard" />

特点:

  • 每次 startActivity() 都会创建新实例。
  • 最常见最常用。

2.2. singleTop(栈顶复用)

  • 如果要启动的 Activity 正好在栈顶,不会新建实例,而是复用当前的实例。

  • 否则与 standard 一样,创建新实例。

ini 复制代码
<activity android:name=".MyActivity"
          android:launchMode="singleTop" />

特点:

  • 适合通知栏点击、Fragment 中多次点击避免重复启动页面。
  • 若复用实例,onNewIntent() 会被调用。

2.3 3. singleTask(栈内复用 + 清除上层)

  • 系统查找是否存在该 Activity 的实例;

  • 有:把它之上的所有 Activity 都销毁,它自己 复用 ,调用 onNewIntent()

  • 无:创建新实例。

ini 复制代码
<activity android:name=".MyActivity"
          android:launchMode="singleTask" />

特点:

  • 实例唯一,可跨栈复用(所在 task 内只保留一个)。
  • 适合首页、聊天窗口、视频通话等"入口页"。

2.4. singleInstance(单独任务栈)

  • Activity 被放在 一个独立的任务栈中

  • 每次调用都是使用它独占的任务栈。

ini 复制代码
<activity android:name=".MyActivity"
          android:launchMode="singleInstance" />

特点:

  • 所有调用该页面的应用或组件,都复用这个栈中的唯一实例。
  • 非常规页面(如锁屏页、来电页、系统全屏弹窗)使用。

3.对比总结

模式 是否复用 是否独立任务栈 应用场景
standard ❌ 每次都新建 默认,普通页面
singleTop ✅ 栈顶复用 防止重复点击跳转
singleTask ✅ 栈内复用 + 清栈 首页、统一入口页
singleInstance ✅ 复用 全局唯一页面(锁屏、来电)

4.场景推荐总结

场景 推荐启动模式
正常页面跳转 standard(默认)
连续点击防止重复 singleTop
回到主页/首页 singleTask
独立弹窗、锁屏、全屏页 singleInst

总结

Android Activity的四种启动模式是,针对Activity启动的不同场景,定义的页面在任务栈中的不同行为模式.所以在不同的业务需要求情况下,选用不同的任务栈,达到事半功倍的效果.

相关推荐
游戏开发爱好者81 小时前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
王码码20351 小时前
Flutter for OpenHarmony 实战之基础组件:第三十一篇 Chip 系列组件 — 灵活的标签化交互
android·flutter·交互·harmonyos
黑码哥1 小时前
ViewHolder设计模式深度剖析:iOS开发者掌握Android列表性能优化的实战指南
android·ios·性能优化·跨平台开发·viewholder
亓才孓1 小时前
[JDBC]元数据
android
独行soc2 小时前
2026年渗透测试面试题总结-17(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
金融RPA机器人丨实在智能2 小时前
Android Studio开发App项目进入AI深水区:实在智能Agent引领无代码交互革命
android·人工智能·ai·android studio
科技块儿2 小时前
利用IP查询在智慧城市交通信号系统中的应用探索
android·tcp/ip·智慧城市
独行soc2 小时前
2026年渗透测试面试题总结-18(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
王码码20353 小时前
Flutter for OpenHarmony 实战之基础组件:第二十七篇 BottomSheet — 动态底部弹窗与底部栏菜单
android·flutter·harmonyos
2501_915106323 小时前
app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
android·ios·小程序·https·uni-app·iphone·webview