Android Activity 有四种启动模式:“standard” (默认),“singleTop”,“singleTask”,“singleInstance”.
这四种到底有什么区别呢?
下面假设有两个Activity A & B来描述以下启动模式的区别,程序逻辑就是A可以点击Button跳转到B,B可以点击Button跳转到A.
“standard” (默认):
如果执行以上的操作,栈中就会有无数个A/B,即A->B->A->B->A->B。
“singleTop”:(单栈顶部单例)
如果该Activity在栈顶部,就不会创建新的Activity,如果不在顶部就会,比如还是执行standard的操作,其结果一样为:A->B->A->B->A->B。
但是如果是用A启动B,再启动B,就只是(A->B)而不是默认情况下的(A->B->B)
“singleTask”:(单栈单例)
不管跳转,一个栈中只会有一个实例,以上操作结果为(A->B or B->A)
“singleInstance”(多栈)
当创建这个Activity会单独开启一个栈,比如A为正常模式,B为singleInstance模式,执行A-》B-》A的操作最后栈的结果为(A->A B)
退栈的顺序为(B -> A -> A)