在程序开发中必须了解Activity的四种启动模式

来源:互联网 发布:苹果mac终端怎么进入 编辑:程序博客网 时间:2024/06/07 11:56

Activity的启动模式有四种,分别是standard、singleTop、singleTask和singleInatance。在AndroidMainfest.xml中,通过标签的android:launchMode属性可以设置启动模式.下面针对四种模式分别进行详细的讲解。
1.standard模式
standard是Activity默认的启动模式,在不指定Activity启动模式的情况下,所有Activity使用的都是standard模式,因此前面使用的Activity都是standard启动模式
在standard模式下,每当启动一个新的Activity,它就会进入任务栈,并处于栈顶的位置,系统不会判断这个Activity在栈中是否存在,每次启动都会创建一个新的实例。
接下来通过图示展示一下standard模式下Activity的存放情况:
在standard启动模式下假设有三个Activity,首先Activity01最先入栈,其次是Activity02,最后是Activity03;出栈时,Activity03最先出栈,其次是Activity02,最后是Activity01,满足”先进后出”的原则.
这里写图片描述
这里写图片描述

2.singleTop模式
singleTop模式与standard类似,不同的是,当启动的Activity已经位于栈顶时,则直接使用它不创建新的实例.如果启动的Activity没有位于栈顶时,则创建一个新的实例位于栈顶.
接下来通过图示展示一下singleTop模式下Activity的存放情况:
分两种情况:
(1)当前栈顶中的元素是Activity03,如果再次启动的界面还是Activity03,则复用当前栈顶的Activity实例.
这里写图片描述

由于当前栈顶还是Activity03,则Activity03不用再次入栈,所以出栈和 standard一样.
这里写图片描述

(2)如果再次启动的界面没有位于栈顶,则会重新创建一个实例.
这里写图片描述
这里写图片描述

3.singleTask模式
如果希望Activity在整个应用程序中中存在一个实例,可以使用singleTask模式,每次启动Activity时,系统首先会检查栈中是否存在该Activity的实例,如果发现则直接使用该实例,并将当前之上的所有Activity出栈,如果没有发现则创建一个新的实例.
这里写图片描述
这里写图片描述

4.singleInstance模式
在开发程序中,如果需要Activity在整个系统中都只有一个实例,这时就需要用到singleInstance模式,singleInstance模式加载Activity时,无论从哪个任务栈中启动该Activity,只会创建一个Activity实例,并且会使用一个全新的任务栈来装载该Activity实例,采用这种模式分为以下两种模式:
(1)如果要启动的Activity不存在,系统会先创建一个新的任务栈,再创建该Activity实例,并把Activity加入栈顶.
这里写图片描述

0 0
原创粉丝点击