咸鱼

咸鱼是以盐腌渍后,晒干的鱼

0%

Android 启动模式备忘

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
2
3
4
5
val intent = Intent(this,LoginActivity::class.java)
//清除任务栈
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)