Android activity 的四种 launchMode

Android 的四种 launchMode 是我们比较常用的基础点,但是有时候很容易就混淆了。Activity 一共有四种启动方式:standard、singleTask、singleInstance、singleTop,四种方式各有个的特点,在不同情况下会使用不同的启动方式。

1. standard 启动方式

这种方式是 sdk 种默认的方式,如果不给 activity 设置启动方式,那么就会默认的采用这种启动方式,这种方式在调用 startActivity 的时候,不管之前是否启动过,系统都会重新创建一个实例出来

2. singleTask 启动方式

如果有其他 task 已经创建了这个 activity,则会直接调用这个实例

3. singleInstance 启动方式

新建一个 task,并且该 task 中有且只有一个该 activity 的实例,如果后面再次调用 startActivity,会重用这个实例

4. singleTop 启动方式

如字面意思,在 task 栈顶只有一个实例,也就是如果当前栈顶是 acticity A,如果启动 intent 又跳转到 A,则不会产生新的实例,但如果 A 最初不在栈顶,则会产生一个实例(如:任务栈 A B C D,D 在栈顶,这个时候有 Intent 启动了 D,则启动后的任务栈情况为 A B C D;如果有 Intent 启动了 B,则任务栈的情况为: A B C D B。
以上为 activity 的四种方式,比较容易混淆,记录下来以备查看。