废话
本文我们来学习Activity的四种启动模式
- standard
- singleTop
- singleTask
- singleInstance
返回栈(BackStack)
在开始之前我们先要了解一个概念,返回栈
栈(stack)又名堆栈
特性:先进后出,后进先出
每个app都会有返回栈,返回栈里面存放的是Activity
为什么叫返回栈,因为在启动Activity和点击Back键就是进栈和出栈的操作
我们启动一个新的Activity就会把旧的Activity覆盖掉,此时新的Activity就是进栈
接着我们点击Back键,Activity就会被销毁,此时Activity就出栈了
standard
这个是Activity的默认启动模式,我们通过Intent每启动一次Activity,就会创建一个新的实例
<activity android:name=".SecondActivity"
android:launchMode="standard"/>
singleTop
打开app看到的界面就是栈顶页面,singleTop的启动模式是每次启动一次Activity,系统就会检查启动Activity是否在栈顶,如果在栈顶的话就不创建新的实例,如果不在的话就创建新的实例
<activity android:name=".SecondActivity"
android:launchMode="singleTop"/>
singleTask
singleTask模式的Activity在启动时,系统会检查一遍此Activity是否已经在栈内了,如果在的话就不创建新实例,如果不在就创建一个新的实例
<activity android:name=".SecondActivity"
android:launchMode="singleTask"/>
singleInstance
这个启动模式比较少用,一般来说,一个普通的app,返回栈就一个,如果你设置了singleInstance的启动模式,那么系统会创建一个新的返回栈给此Activity用
A、B、C三个Activity,A和C是standard启动模式,B是singleInstance启动模式,A和B都有一个按钮,分别是启动B和启动C
此时的调用顺序:A -> B -> C
然后你按返回键,你会发现C直接回到A,然后再按一次返回键才回到B,这时因为A和C是在同一个返回栈内,而B在另一个返回栈,所以C先是回到A,此时A和C所在的返回栈已经没有Activity了,系统才会去其他返回栈
<activity android:name=".SecondActivity"
android:launchMode="singleInstance"/>
以上就是Activity的四种启动模式