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。的更多相关文章

  1. 理解Android的四种启动模式

    一:前言 四种模式分别为standard, singleTop, singleTask, singleInstance.自己应该明确一个概念先,single到底要single什么.每一个应用app都有 ...

  2. android activity四种启动模式

    1.standard <activity android:name=".MainActivity" android:launchMode="standard&quo ...

  3. Android中的TaskStack及启动模式

    目录 前言 如何观察ActivityStack? 几个问题 关键类介绍 ActivityStack的创建与种类 不同启动模式 launchMode Standard SingleTop SingleT ...

  4. Android中Activity的四大启动模式实验简述

    作为Android四大组件之一,Activity可以说是最基本也是最常见的组件,它提供了一个显示界面,从而实现与用户的交互,作为初学者,必须熟练掌握.今天我们就来通过实验演示,来帮助大家理解Activ ...

  5. Android中Activity的四种启动模式

    要了解Android的启动模式先要了解一下Activity的管理方式: 1.Activity的管理机制 Android的管理主要是通过Activity栈来进行的.当一个Activity启动时,系统根据 ...

  6. Android启动Activity的两种方式与四种启动模式

    1.在一个Activity中调用startActivity()方法 2.在一个Activity中调用startActivityRequest()方法. 重写onActivityResult方法,用来接 ...

  7. Android中的启动模式(下)

    在这篇文章中,我会继续跟大家分享有关于Android中启动模式的相关知识.当然,如果对这个启动模式还不完全了解或者没有听过的话,可以先看看我之前写的有关于这个知识点的入门篇Android的启动模式(上 ...

  8. Android中Activity启动模式详解

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

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

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

随机推荐

  1. 运维人员word优化

  2. ip route rule 路由策略 高级路由 捆绑 网桥

    http://lwfs.net/2005/11/28/10/ #!/bin/bash IP0= IP1= GW0= GW1= NET0= NET1= DEV0=eth0 DEV1=eth1 # com ...

  3. mysql连接状态

    mysql连接状态 mysqladmin -uroot -h127.0.0.1 status mysqladmin -uroot -h127.0.0.1 processlist

  4. CNN卷积层基础:特征提取+卷积核+反向传播

    本篇介绍卷积层的线性部分 一.与全连接层相比卷积层有什么优势? 卷积层可以节省参数,因为卷积运算利用了图像的局部相关性——分析出一小片区域的特点,加上Pooling层(汇集.汇聚),从附近的卷积结果中 ...

  5. Django -- settings 详解

    Django settings详解 1.基础 DJANGO_SETTING_MODULE环境变量:让settings模块被包含到python可以找到的目录下,开发情况下不需要,我们通常会在当前文件夹运 ...

  6. lufen登录注册

    创建精写报错信息表用于记录错误信息(新的文件夹,创建新的py) #静写报错信息class BaseResponse(object): def __init__(self): self.code=100 ...

  7. 20165205 2017-2018-2 《Java程序设计》第八周学习总结

    20165205 2017-2018-2 <Java程序设计>第八周学习总结 教材学习内容总结 进程与线程 线程不是进程,但其行为很像进程,线程是比进程更小的执行单位. 与进程不同,线程的 ...

  8. 【Social listening实操】如何运用免费的大数据工具获得行业洞察?

    本文转自知乎 作者:苏格兰折耳喵 ----------------------------------------------------- 当我们想要创业却对市场行情不甚了解,该如何迅速了解市场行情 ...

  9. 代码: js: 数值操作

    数值转换: 将 32000 这样的数字,转换为“3.2万” //将32000 这样的数字,转换为 “3.2万” var price = parseInt('31999'); var price2 = ...

  10. 48.纯 CSS 创作一盘传统蚊香

    原文地址:https://segmentfault.com/a/1190000015246974 感想: 都是半圆边框合成的. HTML code: <div class="coil& ...