[TOC]
修改记录
| 版本 | 修改内容 | 日期 |
|---|---|---|
| V1.0.0 | 初始版本 | 2022.5.18 |
Activity启动模式
Android系统为Activity提供了四种启动模式:
- 标准模式(standard)
- 栈顶复用模式(singleTop)
- 栈内复用模式(singleTask)
- 单例模式(singleInstance)
Activity以栈的方式进行管理,栈是一种先进后出的数据结构,也就是先启动的Activity,都是最后销毁。每按一次返回,退出一个Activity。
Activity的启动模式会影响栈的管理以及Activity真实的生命周期,方便APP处理不同的业务场景。
先简单介绍四种模式的定义
标准模式(standard)
Android创建Activity的默认模式,如果没有为Activity设置启动模式的话,默认就是标准模式。 每次启动一个Activity都会创建一个新的实例入栈,无论这个实例是否存在。
栈顶复用模式(singleTop)
有两种处理情况:
- 要创建的Activity已经处于栈顶,此时会直接复用栈顶的Activity,不会再创建新的Activity。
- 要创建的Activity已经存在栈中,但是不处于栈顶;此时会创建一个新的Activity实例入栈。
栈内复用模式(singleTask)
要创建的Activity已经处于栈中,此时不会创建新的Activity,而是将栈中的Activity上面的其他Activity销毁,使它成为栈顶Activity。
单例模式(singleInstance)
singleInstance全局单例模式,singleTask的加强模式。除了具有singleTask的特性外,此模式Activity只能单独位于一个Activity栈。 经常使用于系统应用,比如,Launch、锁屏键的应用,整个系统中只有一个。
标准模式(standard)
Android新建的所有Activity默认启动模式都是standard,按照创建的先后顺序,依次入栈,采用先进后出的方式管理。 不管栈中是否已存在Activity实例,都会创建新的Activity实例再入栈。
接下来,我们通过代码介绍standard模式,大体思路如下:
- 先声明一个Activity,应用启动时创建Activity实例并入栈
- 给Activity添加按钮点击事件,当用户点击按钮时创建Activity实例并入栈。
- 用户手动点击系统返回键,Activity实例出栈,Activity实例的生命周期结束。
- 通过日志观察Activity栈和Activity实例的运行情况。
声明Activity
先在manifest中声明Activity
<activity android:name="com.wangxb.app.launchmode.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
定义Activity界面,声明一个按钮 ```xml
```
添加点击事件
观察任务栈和Activity声明周期
总结


