Android活动的启动模式
四种启动模式
- 标准模式(standard)
- 栈顶复用模式(singleTop)
- 栈内复用模式(singleTask)
- 单实例模式(singleInstance)
指定启动模式
AndroidManifest.xml中指定
<activity
android:name=".MainActivity"
android:launchMode="singleTask" />
Intent跳转时指定
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Intent 跳转时通过 setFalgs() 指定对应activity的启动模式。
启动标志(不止三种):
- FLAG_ACTIVITY_NEW_TASK
- FLAG_ACTIVITY_SINGLE_TOP
- FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_NEW_TASK: 与 singleInstance 相同。
FLAG_ACTIVITY_SINGLE_TOP: 与 singleTop 相同。
FLAG_ACTIVITY_CLEAR_TOP: 与 singleTask 相同。
特殊情况
在 AndroidManifest.xml 中,如果给一个 activity 同时设置为栈内复用和入口活动的话,那每次从桌面打开程序时都会进入程序的启动页。
<activity
android:name=".MainActivity"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>