一、前言
Android 提供了四种启动模式:
- Standard (标准模式)
- SingleTop(栈顶复用模式)
- SingleTask(栈内复用模式)
- SingleInstance(单例模式)
二、区别
三、设置
启动模式有 2 种设置方式:在 AndroidMainifest 设置、通过 Intent 设置标志位
1. 在 AndroidMainifest 设置
<activity
android:launchMode="启动模式"
//属性
//standard:标准模式
//singleTop:栈顶复用模式
//singleTask:栈内复用模式
//singleInstance:单例模式
//如不设置,Activity的启动模式默认为**标准模式(standard)**
</activity>
2. 通过Intent设置标志位
Intent inten = new Intent (ActivityA.this,ActivityB.class);
intent,addFlags(Intent,FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
四、面试题
说下 Activity 的四种启动模式?
参考回答:
- standard 标准模式:每次启动一个 Activity 就会创建一个新的实例
- singleTop 栈顶复用模式:如果新 Activity 已经位于任务栈的栈顶,就不会重新创建,并回调
onNewIntent(intent) 方法 - singleTask 栈内复用模式:只要该 Activity 在一个任务栈中存在,都不会重新创建,并回调
onNewIntent(intent) 方法。如果不存在,系统会先寻找是否存在需要的栈,如果不存在该栈,就创建一个任务栈,并把该 Activity 放进去;如果存在,就会创建到已经存在的栈中 - singleInstance 单实例模式:具有此模式的Activity只能单独位于一个任务栈中,且此任务栈中只有唯一一个实例