Activity的四种启动模式
这是本人的第一篇博客,很多小伙伴是不是跟我一样很像成为业界的一名大神,本人正在回顾Android知识点,我们一起来学习吧。
standard标准模式:就是正常activity启动的模式。
singleTop单一顶部模式:当创建activity的时候会去检查当前任务栈的栈顶,如果栈顶是当前的实例,就不再创建。
singleTask 单一任务模式:当创建activity的时候会去检查当前的任务栈中是否有这样的实例,如果有的话直接复用,并清除任务栈上面的所有activity。如果没有的话,就创建一个。
singleInstance 单一实例模式:在创建activity的时候,系统会单独给activity 创建一个任务栈,并且任务栈中有且只有一个这样的实例。
有的小伙伴可能会问,什么是任务栈啊?
简单的说就是以栈形式存放任务的内存空间。
例子说明一切:
创建两个Activity,MainActivity和SecondActivity,两个Activity的代码相同,如下:
//点击按钮跳转第一个页面
public void click1(View v) {
Intent intent = new Intent(this,MainActivity.class);
startActivity(intent);
}
//点击按钮跳转第二个页面
public void click2(View v) {
Intent intent = new Intent(this,SecondActivity.class);
startActivity(intent);
}
清单文件中的代码如下:
<activity
android:name="com.itheima.lunchmode.SecondActivity"
//这里定义不同的运行模式
android:launchMode="singleTop">
</activity>
1:设置为singleTop时:运行效果如下:
可以看到我点击Open2了很多次,但是我按了一次返回键它就退回了第一个页面,说明第二个页面只创建了一个实例.
2:设置为singleTask时:运行效果如下:
这种模式下,不管我怎么点击,我按了两个返回键才退出,说明,第一次打开第二个页面的activity之前的activity没有被清空,后面的activity都被清空了.
3:设置为singleInstance时:运行效果如下:
这种模式下,我相互点击了很多次,但是第二个页面的activity只有一个,第一个页面创建了多少个还是多少个.为什么呢?看看上面的定义你就明白了.
4:standard模式:我就不演示了,平时的就是这个模式.
小伙伴们,你们明白了吗?