开篇知识点:

  • activity在启动时,launchMode默认是standard模式,taskAffinity(任务相关性)默认是包名
  • 当为Activity指定launchMode为singleTask且taskAffinity为"xxx.xxx.xxx"时,系统会检测是否有同样的"xxx.xxx.xxx"存在,不存在,将会为它创建一个新的任务栈,并把此activity压进栈。存在,把位于它之上的activity出栈,它置于栈顶。
  • 特别注意:A在启动B时,默认情况下(不指定launchMode和taskAffinity,不设置Intent的Flag),新创建的B会被放入A所在的任务栈中。如果设置了Intent.FLAG_ACTIVITY_NEW_TASK,系统会去查找目标activity的taskAffinity是否存在,不存在,就创建,存在,就把该栈提到前台。

A启动B(B的launchMode是singleTask,taskAffinity默认)流程图:

举例说明以上即几点:

1.现在有MainActivity,launchMode和taskAffinity都是默认。

2.A、B两个activity启动模式都为singleTask,taskAffinity为“com.test.qq"。

<activityandroid:name=".activities.test.AActivity"android:launchMode="singleTask"android:taskAffinity="com.test.qq" /><activityandroid:name=".activities.test.BActivity"android:launchMode="singleTask"android:taskAffinity="com.test.qq" /><activityandroid:name=".activities.MainActivity"android:launchMode="standard"/>

做如下操作:

Main启动A,A启动B,B启动Main,Main启动A,点返回键。此时,栈是什么情况?剩下哪个页面?

通过命令行查看日志分析(adb shell dumpsys activity activities):

1.Main启动A,可以看到,#142任务栈中有A,#141中有Main

2.A启动B,可以看到,#142中有A、B,#141中有Main

3.B启动Main,#142中有Main、A、B,#141中有Main

4.Main启动A,#142中只有A了,#141中还有Main

5.按返回键,#142栈已经没了,还剩下#141中的Main,如果再按返回键,就退出应用了。

这几点为什么这样走,在开篇知识点都有说过。

参考:任玉刚《Android开发艺术探索》

Activity启动模式之singleTask属性taskAffinity浅谈相关推荐

  1. Activity启动模式和FLAG、TASKAFFINITY

    Activity的任务栈Task以及启动模式与Intent的Flag详解 转载至 http://www.jianshu.com/p/c1386015856a 什么是任务栈(Task) 官方文档是这么解 ...

  2. activity 启动模式_腾讯大牛:你根本不懂Activity!

    码个蛋(codeegg)第 583 次推文 作者:厘米姑娘 原文:https://www.jianshu.com/p/602b1ec4ca7a 在之前的Activity篇主要学习Activity的生命 ...

  3. activity启动模式你所不知道的异常情况

    前言 虽然了解activity的四种启动模式,但是在一些复杂场景下,各种启动模式会出现的现象,以及现象的原因并不清楚,再加上个taskAffinity launchMode clearTaskOnLa ...

  4. (二)Activity启动模式

    启动模式 一.概念 顾名思义,就是activity的启动方式方法,共有4种模式standard,singleTop,singleTask,singleInstance. 为什么要学习启动模式呢?因为有 ...

  5. 深入理解Activity启动模式之大结局

    谈起Activity的启动模式必不可少的要是launchMode.Flags.taskAffinity这三块知识点,上一篇文章 深入理解Activity启动模式之launchMode 看过的同学都知道 ...

  6. 一起看看 Activity启动模式

    小程序开发教程主要介绍了Activity启动模式的相关资料 推荐(免费):小程序开发教程 前言 平常我们启动活动的时候就是直接startActivity或许并没有注意活动的启动模式,默认情况下都是以默 ...

  7. Android Activity启动模式,回退栈管理!

    (一): Activity被回收了怎么办?当系统内存不足的时候Activity是有可能被回收的,打个比方用户在A Activity启动了B Activity那么A就处于停止状态,由于内存不足A会被回收 ...

  8. Activity启动模式完全解读-更新中

    在实际的项目中我们应当根据特定的需求为每个Activity指定恰当的启动模式. 启动模式分为四种,分别是standard.singleTop.singleTask.singleInstance. 可以 ...

  9. activity 启动模式_Android世界:Activity的启动模式及其适用范围

    一.Activity启动模式简介 activity启动模式,可以理解为activity在任务栈(也叫"回退栈")的回退规则,即点击"back"键时,activi ...

  10. Android中Activity启动模式详解

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

最新文章

  1. java中包的_Java中的包
  2. 要让GAN生成想要的样本,可控生成对抗网络可能会成为你的好帮手
  3. Wiew 像写 Android UI 一样写小游戏布局
  4. 如今网络营销行业火爆网络营销外包专员如何做好整合营销?
  5. 【转载】register、volatile、restrict 三关键字的用法
  6. 动态规划入门 洛谷P1108 低价购买
  7. wxWidgets:wxEventFilter类用法
  8. c语言中函数调用的原理
  9. math.ceil带小数点_JavaScript中带有示例的Math.ceil()方法
  10. 2019C语言程序设计大赛,2019年全国高校计算机能力挑战赛 C语言程序设计决赛
  11. SpringCloud高频重点面试题,看这一篇就够了。
  12. 网站制作---科讯万能搜索系统的简单实用教程
  13. KICKSTART无人值守安装系统
  14. Android AutoCompleteTextView悬浮提示列表原理简单分析
  15. 关于全局异常捕获的思考-真正的全局异常捕获
  16. Linux(Centos)服务器时间校准
  17. 使用Tushare进行公司数据分析
  18. StarUML 3 中文文档 构件图
  19. 大数据培训(第一季) java基础-徐培成-专题视频课程
  20. 射频功放学习之基础篇(一)

热门文章

  1. 网络安全课第二节 XSS漏洞检测防御
  2. Windows下安装Ruby及配置镜像源
  3. 用VB 代码读取 Excel 内容
  4. 一个五年Android开发者百度、阿里、聚美、映客的面试心经
  5. 打印机上的一款驱动-惠普LaserJet1020Plus打印机驱动提供下载
  6. windows server 2000系统安装
  7. 全国大学生计算机ms系统,全国计算机等级考试一级计算机基础及MS Office应用模拟练习系统...
  8. 如何把一张图片做成一个好看的电脑图标
  9. Eclipse中打开文件时单击和双击的设置
  10. 2019网易雷火笔试编程题