1.standard 标准模式
每次启动都new一个实例
2.singleTop 栈顶复用模式(栈顶单例模式)
1 | android:launchMode="singleTop" |
- 如果Activity实例处于任务栈栈顶,再启动相同的Activity不会new出一个实例,只会有一个实例。
- 如果Activity实例存在任务栈不处于栈顶,和
standard
一样new实例。
3.singleTask 栈内复用模式(栈内单例模式)
一个任务栈内,只有一个实例,即一个App(任务栈)内一个实例
1 | android:launchMode="singleTask" |
如果Activity实例处于任务栈栈内,但不处于栈顶,启动该Activity会把此实例移到栈顶,并将该实例上面的Activity移除。
使用场景:打开很多页面,一键返回到主页(主页Activity处于singleTask模式)
4.SingleInstance全局单例模式
多个任务栈内,只有一个实例,即一部手机(系统运行时)内一个实例
1 | android:launchMode="singleInstance" |
无论是从哪一个任务栈Task中启动Activity,只会创建一个Activity实例,并且使用一个全新的Task栈来加载该Activity实例。
5.清除任务栈
增加两个Flags可以销毁旧的任务栈,重新建立一个任务栈,使用场景:含有多个Activity在任务栈,一步实现“退出登录”。
1 | val intent = Intent(this,LoginActivity::class.java) |