activity的启动模式分析

来源:互联网 发布:不同域名的区别 编辑:程序博客网 时间:2024/06/11 05:51

activity启动模式在开发中的作用

activity的启动方式有四种:standard 、singleTop、singleTask、singleInstance。

1.standard标准模式

在这个模式下,可以有多个相同的实例。每开启一个activity都会创建一个实例。

例如:有a1、a2、a3个activity。如果你打开a1→a2→a3→a1→a2→a3。实际的栈中a1→a2→a3→a1→a2→a3其中a1在最下面(先进后出)

2.singleTop可以有多个相同实例,但是不允许叠加。

在这个模式下,如果已经开启了a1,如果紧接着再次开启a1时,会调用onNewIntent()方法。

activity第一次启动的时候执行onCreate()→onStart()→onResume等。在singleTop模式下,再次启动该activity就会执行onNewIntent()→onRestart()→onStart()onResume.

例如:有a1、a2、a3个activity,如果你的打开顺序a1→a2→a2,实际开启顺序a1→a2。

开启a1→a2→a3→a1→a2→a3,实际的开启顺序a1→a2→a3→a1→a2→a3。(可以发现不同的activity可以交替开启,开启同一个activity则会被覆盖。)

3.singleTask模式

在同一个任务栈中不会存在相同的实例,如果该activity不存在,就会创建一个实例。

例如:有a1、a2、a3三个activity。如果你的开启顺序是a1→a2→a3→a1,实际栈中a1。前面的activity被销毁了

如果开启顺序为a1→a2→a2。实际栈中a1→a2。

4.singleInstance模式

只有一个实例,这个实例独立运行在一个任务栈task中。这个栈只有一个activity实例。

例如:有a1、a2、a3三个activity,其中a2是singleInstance模式。

如果你的开启顺序为a1→a2→a3,a2在任务栈c。即a1开启了任务栈c,存放a2这个实例,a2有开启了任务栈b,将a3压入到任务栈b。此时任务栈x存放a1、a3.任务栈c存放a2.

以上只涉及到本应用程序,不包括其他应用程序开启本应用程序的任务栈。




原创粉丝点击