Activity的四种启动模式

来源:互联网 发布:远野贵树 程序员 编辑:程序博客网 时间:2024/05/17 22:00

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时:运行效果如下:
    singleTop效果

    可以看到我点击Open2了很多次,但是我按了一次返回键它就退回了第一个页面,说明第二个页面只创建了一个实例.

  • 2:设置为singleTask时:运行效果如下:
    singleTask效果

    这种模式下,不管我怎么点击,我按了两个返回键才退出,说明,第一次打开第二个页面的activity之前的activity没有被清空,后面的activity都被清空了.

  • 3:设置为singleInstance时:运行效果如下:
    singleInstance效果

    这种模式下,我相互点击了很多次,但是第二个页面的activity只有一个,第一个页面创建了多少个还是多少个.为什么呢?看看上面的定义你就明白了.

  • 4:standard模式:我就不演示了,平时的就是这个模式.

    小伙伴们,你们明白了吗?

0 0