1. Activity启动模式基础概念
在Android开发中,Activity作为四大组件之一,其启动模式直接影响着应用的页面导航体验和内存管理效率。理解启动模式的核心在于掌握任务栈(Task Stack)的工作原理。任务栈采用后进先出(LIFO)的数据结构,就像一摞盘子,最后放上去的盘子会最先被取走。
提示:任务栈不仅存储Activity实例,还维护着它们的启动顺序和返回逻辑。当用户按下返回键时,系统会从栈顶开始依次销毁Activity。
启动模式主要解决三个核心问题:
- 实例复用:避免重复创建相同Activity造成内存浪费
2.栈管理:控制Activity在任务栈中的排列方式 - 导航逻辑:优化用户返回路径体验
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 四种启动模式深度解析
2.1 standard模式:最基础的启动方式
作为默认启动模式,standard模式的工作机制最为简单直接。每次启动Activity时,系统都会无条件创建新的实例。这就像每次点餐都要重新填写菜单,即使点的菜品完全相同。
xml复制<activity
android:name=".DetailActivity"
android:launchMode="standard" />
实际开发中我曾遇到一个典型场景:在商品列表页连续点击多个商品,使用standard模式会创建多个DetailActivity实例。通过ADB命令查看任务栈:
bash复制adb shell dumpsys activity activities
输出结果会显示类似如下的栈结构:
code复制TaskRecord{xxx}
ActivityRecord{aaa} - ListActivity
ActivityRecord{bbb} - DetailActivity (商品A)
ActivityRecord{ccc} - DetailActivity (商品B)
注意事项:虽然standard模式简单直观,但在需要传递数据的场景要特别注意。新实例不会接收到之前实例的Intent数据,需要通过其他方式(如ViewModel)共享数据。
2.2 singleTop模式:智能的栈顶复用
singleTop模式增加了一层智能判断:仅当目标
