Android笔记(八)活动的启动模式

1.启动模式一共有四种,分别是standard、singleTop、singleTask 和 singleInstance,可以在AndroidManifest.xml中通过给activity标签指定android:launchMode 属性来选择启动模式。

2.standard

standard 是活动默认的启动模式,在不进行显式指定的情况下,所有活动都会自动使用

这种启动模式。在 standard 模式下,每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置。对于使用standard 模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。比如现在栈顶的活动是1,你在1的基础上重新启动活动1,那么现在栈中就是两层活动,第一层是活动1,第二层还是活动1.

3.singleTop

当活动的启动模式

指定为 singleTop,在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例。不过当活动并未处于栈顶位置时,这时再启动这个活动,还是会创建新的实例的。

4.singleTask

当活动的启动模式指定为 singleTask,每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。

在活动1的基础上启动活动2,然后在启动活动1,会发现活动1已经存在于返回栈中,所以活动2会出栈,活动1重新成为栈顶活动。在此期间,活动1执行了onRestart()方法,活动2执行了onDestory()方法。

5.singleInstance

singleInstance 模式启动的活动会启用一个新的返回栈来管理这个活动。假设我们的程序中有一个活动是允许其他程序调用的,如果我们想实现其他程序和我们的程序可以共享这个活动的实例,应该如何实现呢?使用前面三种启动模式肯定是做不到的,因为每个应用程序都会有自己的返回栈,同一个活动在不同的返回栈中入栈时必然是创建了新的实例。而使用singleInstance 模式就可以解决这个问题,在这种模式下会有一个单独的返回栈来管理这个活动,不管是哪个应用程序来访问这个活动,都共用的同一个返回栈,也就解决了共享活动实例的问题。

例如,我们现在依次启动了活动1,活动2,活动3,而活动2的启动模式是singleInstance,那么现在活动1和活动3是在同一个返回栈中的,而活动2则是在另一个返回栈,并且这个栈中只有这一个活动。

现在,手机显示的是活动3,我们按下Back键,手机显示的就是活动1,在按下Back键,手机会显示活动2,再次按下Back键,才会退出程序。

因为只有当一个返回栈空了,才会显示另一个返回栈的栈顶活动。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-05 20:33:13

Android笔记(八)活动的启动模式的相关文章

(Android第一行代码)活动的启动模式

活动的启动模式 启动模式一共有四种,分别是 standard.singleTop. singleTask 和 singleInstance,可以在 AndroidManifest.xml 中通过给<activity>标签指定 android:launchMode属性来选择启动模式.下面我们来逐个进行学习. 1.standard模式:(对于使用 standard 模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建 该活动的一个新的实例.)   是活动默认的启动模式  修改

android中活动的启动模式

活动的启动模式 1.standard 2.singleTop 3.singleTask 4.singleInstance standard为默认的活动启动模式(无论活动是否在栈顶,都会创建一个新的活动) sing了Top(如何栈顶有了新的活动就不会创建新的活动,会直接使用已经存在的活动) singleTask(可以解决重复创建栈顶活动的问题,创建新的活动之前会检查是否活动已经存在,若存在就把该活动之前的活动全部清出栈,将该活动显示在栈顶,否则就创建一个新的活动) singleInstance(该

[Android]活动的启动模式

启动模式一共有四种,分别是 standard.singleTop.singleTask 和 singleInstance , 可 以 在 AndroidManifest.xml 中 通 过 给 标 签 指 定android:launchMode 属性来选择启动模式.在实际项目中我们应该根据特定的需求为每个活动指定恰当的启动模式. 1. standard standard 是活动默认的启动模式,在不进行显式指定的情况下,所有活动都会自动使用这种启动模式.因此,到目前为止我们写过的所有活动都是使用的

Android——活动的启动模式

活动的启动模式分为:standard.singleTop.singleTask.singleInstance四种. standard模式 是活动默认的启动模式,是在学习活动跳转时最先接触的模式.这个启动模式无视栈顶的活动,在实现Intent跳转后就会创建一个新的活动(即使是同一个活动).例如: Intent intent=new Intent(FirstActivity.this, FirstActivity.class); startActivity(intent); 当你在FirstActi

活动的生命周期(五)活动的启动模式

活动的启动模式对我们来说是个新的概念,在实际项目中我们会根据活动的需求为每个活动指定恰当的启动模式.共分为四种分别是:standard,singletop,singletast,singleinstance,可以在androidMainfest.xml中进得指定,android:launchModel属性来选择启动查式. Standard(标准):从字面就可能看得出这个是标新准的启动模式,在不进行显示指定的情况下,都是这种模式.在这个模式下每当启动一个新的活动时,它就会压入栈的顶部,而不去管这个

活动的启动模式汇总

启动模式一共有四种,分别是 standard.singleTop. singleTask 和 singleInstance,可以在 AndroidManifest.xml 中通过给<activity>标签指定 android:launchMode属性来选择启动模式,如 android:launchMode="standart" android:launchMode="singleTop" android:launchMode="singleTa

安卓 活动的启动模式

活动的启动模式:1.standard 2.singleTop 3.singleTask 4.singleInstance-------可在 AndroidManifest 中通过给<activity>标签指定android:launchMode属性来选择启动模式 standard     (1)默认的启动模式 每此启动都会创建该活动的一个新的实例 返回栈中可存在3个相同的activity,所以  按三次back才可退出     返回栈中可是     A    A    A singleTop

Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags();singleTask的两种启动方式。

Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags(); 一.Android Activity 四种启动模式 lunchMode 在Manifest 配置文件中的属性如下: (1) android:launchMode="standard" (2)android:launchMode="singleTop" (3)android:launchMode="singleTask" (4)andro

(Android review) 任务栈与启动模式

这一个知识点主要以理解为主: 一.任务栈(task stack) 1.作用:就是用来管理activity的进入,退出.记录了用户的行为. 2.举例: 假如要进行一下操作: 这时候,任务栈中的activity的情况如下: 二.启动模式 1.配置: for example: <activity           XXXX            android:configChanges="orientation|keyboardHidden"> 2.分类: standard: