Android DevArt3:SingleTask启动模式探究:首先从MainActivity启动案例入口AActivity,并在A中启动BActivity,从B启动CActivity, 再从C中又启动AActivity, 最后在A中启动B,现在按两次back键,然后回到的是哪个Activity? 答案是,回到MainActivity。
SingleTask启动模式探究
GitHub
如题:首先从MainActivity启动案例入口AActivity,并在A中启动BActivity,从B启动CActivity,
再从C中又启动AActivity, 最后在A中启动B,现在按两次back键,然后回到的是哪个Activity?
简单点:Main->A->B->C->A->B->double back->which activity?(MainActivity).
答案是,回到MainActivity。
启动流程:
上图对应的AndroidMenifest.xml配置:
<!--Android启动模式之SingTask探究-->
<activity
android:name=".Chapter1.launchmode.ALActivity"
android:launchMode="standard" />
<activity
android:name=".Chapter1.launchmode.BLActivity"
android:launchMode="singleTask"
android:taskAffinity="com.art.singletask1" />
<activity
android:name=".Chapter1.launchmode.CLActivity"
android:launchMode="singleTask"
android:taskAffinity="com.art.singletask1"></activity>
入栈模型:
全文重点!!!
从C跳转到A,因为A是standard,系统会为A创建一个新的实例并将A添加到启动它的那个Activity(即C)所在的任务栈中:
通过上图可知,此时com.art.singletask1栈中的有三个实例:BCA。
此时,从A启动B,由于B的launchMode为singleTask(栈内复用模式),工作模式为“后进先出”,B要回到栈顶的话,只能是AC出栈。
到这里就好理解了,back第一下,退出处于上层的B,第二次,退出左边的A,显示MainActivity。分析到这里,可以得出结论,singleTask模式的Activity切换到栈顶时,会导致它上面的栈内的所有Activity出栈。
GitHub
Android DevArt3:SingleTask启动模式探究:首先从MainActivity启动案例入口AActivity,并在A中启动BActivity,从B启动CActivity, 再从C中又启动AActivity, 最后在A中启动B,现在按两次back键,然后回到的是哪个Activity? 答案是,回到MainActivity。的更多相关文章
- 理解Android的四种启动模式
一:前言 四种模式分别为standard, singleTop, singleTask, singleInstance.自己应该明确一个概念先,single到底要single什么.每一个应用app都有 ...
- android activity四种启动模式
1.standard <activity android:name=".MainActivity" android:launchMode="standard&quo ...
- Android中的TaskStack及启动模式
目录 前言 如何观察ActivityStack? 几个问题 关键类介绍 ActivityStack的创建与种类 不同启动模式 launchMode Standard SingleTop SingleT ...
- Android中Activity的四大启动模式实验简述
作为Android四大组件之一,Activity可以说是最基本也是最常见的组件,它提供了一个显示界面,从而实现与用户的交互,作为初学者,必须熟练掌握.今天我们就来通过实验演示,来帮助大家理解Activ ...
- Android中Activity的四种启动模式
要了解Android的启动模式先要了解一下Activity的管理方式: 1.Activity的管理机制 Android的管理主要是通过Activity栈来进行的.当一个Activity启动时,系统根据 ...
- Android启动Activity的两种方式与四种启动模式
1.在一个Activity中调用startActivity()方法 2.在一个Activity中调用startActivityRequest()方法. 重写onActivityResult方法,用来接 ...
- Android中的启动模式(下)
在这篇文章中,我会继续跟大家分享有关于Android中启动模式的相关知识.当然,如果对这个启动模式还不完全了解或者没有听过的话,可以先看看我之前写的有关于这个知识点的入门篇Android的启动模式(上 ...
- Android中Activity启动模式详解
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...
- Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags();singleTask的两种启动方式。
原文:Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags();singleTask的两种启动方式. Android Activity 的四种启动模 ...
随机推荐
- 在线学习和在线凸优化(online learning and online convex optimization)—基础介绍1
开启一个在线学习和在线凸优化框架专题学习: 1.首先介绍在线学习的相关概念 在线学习是在一系列连续的回合(rounds)中进行的: 在回合,学习机(learner)被给一个question:(一个向量 ...
- 1-Lombok工具使用
1.先给Eclispe安装Lombok插件 首先下载 lombok-1.16.6.jar 这个jar包 存放在系统任意盘里面 我这里是放在 c:\lombok-1.16.6.jar 运行命令 点 ...
- Build path specifies execution environment J2SE-1.5. There are no JREs installed in the workspace that are strictly compatible with this environment.
错误信息: Description Resource Path Location TypeBuild path specifies execution environment J2SE-1.5. Th ...
- python 27 获取时区转换后的时间
python3的datetime有timezone属性,这里介绍python2.7环境下,获取时区转换后的时间. 利用第三方插件,pytz,没有安装的话安装一下. #!/usr/bin/env pyt ...
- SOA, EDA, 和 ESB
SOA----面向服务架构,实际上强调的是软件的一种架构,一种支撑软件运行的相对稳定的结构,表面含义如此,其实SOA是一种通过服务整合来解决系统集成的一种思想.不是具体的技术,本质上是一种策略.思想. ...
- val和var和Java
object Hello { def main(args :Array[String]) { val k = i } } jvm代码 public final class Hello$ { publi ...
- ftp的安全问题
ftp漏洞http://www.4hou.com/technology/3507.html
- 1.正则re
正则 :规则表达式 一般在匹配非结构化的数据时用的比较多,结构化的数据一般用xpath,bs4.但具体使用起来都是视情况而定,相对而言.正则规则平时涉及最多也就是匹配邮箱,电话,及特殊字符串.规则相对 ...
- 《GPU高性能编程CUDA实战》第六章 常量内存
▶ 本章介绍了常量内存的使用,并给光线追踪的一个例子.介绍了结构cudaEvent_t及其在计时方面的使用. ● 章节代码,大意是有SPHERES个球分布在原点附近,其球心坐标在每个坐标轴方向上分量绝 ...
- spring 之 init-method & InitializingBean
init-method 是bean (第一次)实例化的时候被调用的. 先看个异常: INFO: Overriding bean definition ; dependencyCheck=; aut ...