1、android中通过任务队列来管理activity

采用栈的结构就是后进先出

手机里面如果启动多个应用就会启动多个任务栈来管理对应的activity。

主要解决下面的问题:对应的四种启动模式:

1、界面1去启动界面2,在界面2中再去启动界面1,是新创建一个界面1的实例,还是使用后来栈中的已经存在的实例,这就和界面1的设置的模式有很大的关系。

标准的模式:每次去调用都会产生一个新的实例,比如当前activity,你在当前的activity中点击按钮再创建当前的activity,在任务栈就会存在当前的activity的两个实例对象。

2、栈顶复用模式:如果已经有一个实例位于acitivity的顶部时候,就不会产生新的实例对象。如果不位于顶部,就会产生一个新的实例对象,举个例子:如果现在栈内的情况是abcd,其中a位于栈顶,这个时候如果d的模式是顶部模式,这个时候如果再启动d,不会在创建新的d的实例对象,栈内的情况还是abcd,如果d的模式设置成第一种标准的模式,那么栈的情况就是abcdd

3 sigleTask对象模式:如果创建一个d activity,此时任务队列中的情况是adbc,此时因为栈中存在了d对象,这个时候不会创建d对象的实例对象,因为d设置了sigleTask属性,此时会将bc从栈中移除出去,导致所有的在d上面的acitivity都会被移除出去,栈中最后只有ad。

4 上面所述的三种模式的activity对象都属于同一个task栈中,最后这种模式有点特殊。我们来举一个例子

界面a去启动界面b,其中界面a在任务s1队列中,界面b设置成singleInstance模式,这个时候会启动一个新的任务队列s2,在s2中放置b的实例对象,在b界面中启动界面c,整个时候不会创建一个新的任务栈,会把c放到队列s1中,s1对应的情况是ac,s2对应的情况是b。启动的顺利是a启动b,b中去启动c

这个时候如果点击返回按键,因为c现在处在可视界面,首先销毁的是s1的队列,先销毁c,在销毁a,s1队列销毁完成成在销毁s2队列在销毁b,而不是先销毁c,在销毁b,在销毁c。

activity的四种启动模式详细分析的更多相关文章

  1. Activity的四种启动模式任务栈图解

    转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 今天带来另一篇Activity的文章--Activity的四种启动模式.该篇文章,会以图文讲解的方式带你彻底掌握Activity的启动 ...

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

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

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

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

  4. Activity的四种启动模式

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

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

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

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

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

  7. 安卓基础之Activity的四种启动模式

    Activity的四种启动模式   Activity的启动模式在清单文件中配置: <activity ... activity:lauchMode:"..."; //有四种模 ...

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

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

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

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

随机推荐

  1. 几个值得学习的Java博客

    谈面试时从写一个单例开始究竟能问多深及终极解决方案  提到了<深入理解java虚拟器><java并发编程实践> 美团点评的技术博客:MySQL索引原理及慢查询优化 https: ...

  2. JAVA中的注释方法

    Java的三种注释方法 ①单行注释:使用 // ,其注释内容从//开始到本行结束,比较常用, 快捷键为:Ctrl + / 或者  Ctrl + Shift + C  取消注释:Ctrl + / 或者  ...

  3. Springboot之actuator未授权访问

    copy 子杰的哈,懒的写了 0x01  未授权访问可以理解为需要授权才可以访问的页面由于错误的配置等其他原因,导致其他用户可以直接访问,从而引发各种敏感信息泄露. 0x02 Spring Boot ...

  4. PETS渗透测试标准总结

    国外的标准框架,感觉大部分渗透公司的测试指南都是从这俩借鉴的,正好复习下. 国外渗透测试标准:http://www.pentest-standard.org 渗透测试分为:前期交互,情报搜集,威胁建模 ...

  5. Java工作流框架jflow 集团应用模式用户组功能

    关键字 驰骋BPM ,工作流开发框架,用户组,接受人规则,用户组发起人范围,选择人范围. 集团工作模式. Ccflow ,jflow.工作流引擎 名词定义与应用背景 对于集团模式的ccflow,jfl ...

  6. Rocket - tilelink - HintHandler

    https://mp.weixin.qq.com/s/MHW_aBSL72YNee9bVWWeaw   简单介绍HintHandler的实现.   ​​   1. 基本功能   实现Hint请求的处理 ...

  7. 非阻塞赋值(Non-blocking Assignment)是个伪需求

    https://mp.weixin.qq.com/s/mH84421WDGRb7cuU5FEFIQ Verilog的赋值很是复杂,包括: 1. Continuous assignment; 2. Pr ...

  8. 【Storm】安装教程

    1.下载tar.gz包 2.上传解压,tar -zxvf 包 -C 路径 3.修改conf/storm.yaml storm.zookeeper.servers: - "bigboss1&q ...

  9. (Java实现) 洛谷 P1223 排队接水

    题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小. 输入输出格式 输入格式: 输入文件共两行,第一行为n:第二行分别 ...

  10. Java实现 蓝桥杯VIP 算法训练 开心的金明

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元钱 ...