Activity的启动模式一共有四种,分别是:standard、singleTop、singleTask、singleInstance。
1、standard模式
standard模式是Activity的默认启动模式,每次启动都会创建新的实例。在不指定的情况下,Activity的启动模式默认为standard模式。如图1.1
图1.1(图片来源于《第一行代码》)
2、singleTop模式
singleTop模式为栈顶复用模式,相较于standard模式,singleTop模式不会每次都创建新的实例,而是会判断该activity是否处于栈顶,若处于栈顶,则不创建新的实例。如图1.2
图1.2(图片来源于《第一行代码》)
3、singleTask 模式
singleTask 模式为栈内复用模式,相较于singleTop模式,singleTask 模式不是判断activity是否处于栈顶,而是判断栈内是否有该activity,如果有,则将该实例上面的所有activity出栈,使得需要的activity实例位于栈顶;如果没有,则创建实例。如图1.3
图1.3(图片来源于网络)
4、singleInstance 模式
singleInstance 模式又称单实例模式 ,独立的任务栈中只有一个实例,不与其他activity共享。如图1.4,有三个activity,其中SecondActivity的启动模式为singleInstance,另外两个activity的启动模式为standard模式。
图1.4(图片来源于《第一行代码》)
修改activity启动模式的方法:
在AndroidMainfest.xml文件中指定android:launchMode属性
<activity
android:launchMode="singleTop"
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>