4种启动模式standard、singleTop 、singleTask、singleInstance 。
在Manifest文件中设置Activity的启动模式:android:launchMode="XXXXX"
1、standard
A、B、C都为standard
A跳转到B;B跳转到C;C跳转到A….
—————————前提—————————————

三个Activity每次都会重新onCreate
当执行“返回”的时候,出栈的顺序为C3-B3-A3-C2-B2-A2-C1-B1-A1
2、singleTop
A、B为standard;c为singleTop
A跳转到B;B跳转到C;C跳转到C
———————————前提—————————————

singleTop与standard非常类似!除非一种情况,就是顶栈跳转到顶栈!
那么顶栈即图中的C 不会onCreate,而是onPause——onResume!
当执行“返回”的时候,出栈的顺序为C1-B1-A1
3、singleTask
A、C为standard;B为singleTask
A跳转到B;B跳转到C;C跳转到A
——————————前提——————————————

singleTask按字面意思,就是只有一个栈!
如图,依次为栈的状态变化
当A2要跳转到B1时,检测到Task中已有B1的实例,则把B1上面的栈清空,露出B1。这样就实现了B1的保留状态,重复使用。
当执行“返回”的时候,出栈的顺序为B1-A1
4、singleInstance
A、C为standard;B为singleInstance
A跳转到B;B跳转到C;C跳转到A
——————————前提——————————————

singleInstance按字面意思,就是只有一个实例!而每一个singleInstance模式的Activity,都会新建一个独立的栈!
所以执行A跳转B;B跳转C;C跳转A的过程中,A与C会累加到一个栈中,B为singleInstance模式,它只有一个实例,便能够重复使用它。
当执行“返回”的时候,出栈的顺序为C3-A3-C2-A2-C1-A1-B1。
浙公网安备 33010602011771号