首先咱必须知道,activity是以栈(后进先出)的结构进行管理的。

当活动A启动了活动B时,A被压入到栈内,B在栈的最顶层。当B调用finish()结束活动时,B从栈弹出,此时A在栈的最顶层。

我们可以在AndroidManifest.xml文件的activity节点,通过指定android:launchMode="standard"属性来实现启动模式的变更。

好,了解活动是如何管理的,那么咱就来了解下,活动的4种启动模式。

1:stand

如果不指定启动模式的话,都是用此标准型启动模式。比如我们启动了活动A,不管栈里面是否已经存在A,A都会被重新创建一遍压入栈。

2:singleTop

顶层活动唯一。比如我们启动了活动A,此时如果栈的最顶层已经存在了A,那么此时就直接使用A。

3:singleTask

栈内活动唯一。和2最大的区别是,此模式不管你活动在栈的什么位置,只要启动A的时候发现A已经在栈内了,在A上面的活动全部被销毁(生命周期比如onDestory也会被执行),直接使用A

4:singleInstance

新创建一个栈来管理此活动。

比如我们指定了活动B启动模式为singleInstance, A、C默认使用stand;以A -> B -> C顺序来启动三个活动后:

C活动finish()后,返回的是A(而不是B,因为管理B的栈独立于AC);A活动finish()后,这时当前的栈已经空了,于是就找到了其他栈(也就是活动B所在的栈)。

【android】activity的4种启动模式简介的更多相关文章

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

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

  2. Android Activity的4种启动模式详解(示例)

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5233269.html 先介绍下Android对Activity的管理,Android采用Task来管理多个A ...

  3. Android Activity的4种启动模式

    Activity的启动模式 standard 默认标志的启动模式,每次startActivity都是创建一个新的activity的实例,适用于绝大数情况 singleTop 单一顶部,如果要开启的ac ...

  4. Android 关于Activity的四种启动模式的简单介绍

    Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standar ...

  5. Android学习笔记四:activity的四种启动模式

    Activity有四种启动模式:standard,singleTop,singleTask,singleInstance. 1.standard:标准启动模式 默认模式,这个模式下启动的Activit ...

  6. Activity的四种启动模式

    Activity有四种启动模式: 1. standard,默认的启动模式,只要激活Activity,就会创建一个新的实例,并放入任务栈中,这样任务栈中可能同时有一个Activity的多个实例. 2. ...

  7. Activity的四种启动模式-图文并茂

    1.对于使用standard 模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例.   例如A启动A,A再接着启动A,A继续启动A,然后再分别出栈,如图所示 ...

  8. Activity的四种启动模式和onNewIntent()

    转自:http://blog.csdn.net/linghu_java/article/details/17266603 Android中Activity启动模式详解   在Android中每个界面都 ...

  9. 详解Activity的四种启动模式

    在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. Ac ...

随机推荐

  1. 将spark默认日志log4j替换为logback

    1.将jars文件夹下apache-log4j-extras-1.2.17.jar,commons-logging-1.1.3.jar, log4j-1.2.17.jar, slf4j-log4j12 ...

  2. WPF 的拖拽操作(DragDrop)

    在WPF中似乎没有对拖拽操作进行改变,和以前的方式一样.如果曾近在 Windows 窗体应用程序中使用过鼠标拖放,就会发现在 WPF 中的编程接口实际上没有发生变化.重要的区别是用于拖放操作的方法和事 ...

  3. JAVA增删改查XML文件

    最近总是需要进行xml的相关操作. 不免的要进行xml的读取修改等,于是上网搜索,加上自己的小改动,整合了下xml的常用操作. 读取XML配置文件 首先我们需要通过DocumentBuilderFac ...

  4. 用SQL语句创建触发器

    --假设XSCJ数据库中增加一新表XS_HIS,表结构和表XS相同,用来存放从XS--表 --中删除的记录.创建一个触发器,当XS表被删除一行,把删除的记录写到日--志表XS_HIS中. CREATE ...

  5. json的循环

    通过for in: var json = {width: '200px', height: '200px', background: 'green'}; var i = ''; for(i in js ...

  6. angular 2+ 路由守卫

    1. 定义接口名称 /domain/login-guard.ts export interface LoginGuard { data: any; msg: string; status: boole ...

  7. excel 使用技巧

    计算两个日期的差值 1.计算当前日期与目标日期相差天数,下面例子中当前日期未2017/3/19 2.列增加数据条

  8. Ubuntu 中 apache 开启 rewrite 模块

    ubuntu14.04中安装好apache2.4之后默认rewrite模块是不开启的,项目public目录下的.htaccess文件就用不了,在浏览器中访问网页总是报500错误,原因就是这个. 执行下 ...

  9. Struts2中的类型转换失败

    类型转换失败: 若 Action 类没有实现 ValidationAware 接口: Struts 在遇到类型转换错误时仍会继续调用其 Action 方法, 就好像什么都没发生一样. 若 Action ...

  10. POJ 3735 Training little cats(矩阵快速幂)

    Training little cats Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 11787 Accepted: 2892 ...