1.Task

  • 每个应用程序对应每个Task,Task里面以栈的形式存储多个Activity。
  • 不同应用程序的切换(如按下home键,去启动另一个app,该app显示在前台,之前app就被放置在后台)其实就是不同Task的前后台切换。
  • 按“back”键其实就是将当前Task(应用程序)顶部的Activity弹出,将下一个Activity显示出来

2.Activity(不同Task下,相同Task下)和Task

Intent中还定义了flag属性(4个常量):

FLAG_ACTIVITY_NEW_TASK;

FLAG_ACTIVITY_CLEAR_TOP;

FLAG_ACTIVITY_RESET_TASK_IF_NEEDED;

FLAG_ACTIVITY_SINGLE_TOP;

在<activity>标签中可以使用如下6个属性:

android:taskAffinity=""
           android:launchMode=""
           android:allowTaskReparenting=""
           android:alwaysRetainTaskState=""
           android:clearTaskOnLaunch=""
           android:finishOnTaskLaunch=""

2.1 Task和Activity的亲属关系

默认情况下,一个应用程序内的所有Activity都有亲属关系(它所属的Task),且属于同一个Task。

亲属关系是指Activity所处的Task,某个Activity可以有多个”爸爸“(Task,前提是allowTaskReparenting设置为"true")

亲属关系起作用的前提:

a.Intent里包含了FLAG_ACTIVITY_NEW_TASK标志

带有这个Intent的Activity会去找它的亲属关系的”爸爸“(Task),找到了

就置于该Task的顶部,没有则创建新的Task

b.<activity>里allowTaskReparenting设置为"true".

当该Activity在不同的Task(该Task与Activity具有亲属关系)里被启动(呼唤)时,

该Activity可以在不同的Task(前提是该Task与Activity具有亲属关系)之间移动

修改亲属关系的方法:

<activity>里taskAffinity属性可以设置它的亲属关系(指定所属的Task)。

2.2 launchMode(启动模式)

该属性有四个值,分别为“standard”,“singleTop”,“singleTask”,“singleInstance”。它们决定了Activity的创建方式,以及如何响应intent的行为

“standard”/“singleTop”

共同点:

该模式的Activity可以实例化多次,并且每处理一个新的intent都会创建一个新的Activity来处理

(除了singTop的某种情况,如下)。standard为默认启动模式

不同点:

(对intent的处理方式):当仅当singleTop的Activity位于目标Task,且位于stack的顶部,

当一个intent发过来的时候,它不会创建新的实例,而是调用它的onNewIntent()方法里处理该Intent。

“singleTask”/“singleInstance”

共同点:只能有一个实例,且总是位于stack的底部。

不同点(对intent的处理方式):

singleTask的Activity只可以允许“standard”,“singleTop”的Activity进入它的Task里。

它处理intent的方式是,只有它位于stack的顶部时才调用onNewIntent()方法处理该Intent,不在顶部时则丢弃

而“singleInstance”的Activity不允许其他的Activity进入它的Task里,所以它既是位于

stack的底部,也位于stack的顶部,因此只能intent到来时只能由它处理(调用onNewIntent()方法)。

2.3 清除堆栈

默认情况下,当用户离开一个应用程序较长时间时,系统就会将Task的所有Activity清除,

除了根Activity,既只保留初始的Activity。当然你可以通过以下属性的修改来改变。

clearTaskOnLaunch:一旦用户离开应用程序再次返回时,系统会清除所有的Activity除

了根Activity。

alwaysRetainTaskState:保留Task的状态,即所有的Activity都不会被清除。

finishOnTaskLaunch:可以用在所有的Activity上,不局限于根Activity,true表示一旦

用户离开了task,则该Activity就不存在。

转载于:https://www.cnblogs.com/beyondbycyx/p/4334013.html

Activity和Task相关推荐

  1. Android中Activity和task,活动亲和力,启动模式,活动状态以及生命周期,激活钝化

    Activity和task: android通过保持所有activity在同一个task中来维护用户的经历-典型是在launcher选择的 应用,栈顶活动是交互活动,back后,pop栈,即使涉及多个 ...

  2. 【Android】Activity的task相关

    转自:http://blog.csdn.net/liuhe688/article/details/6761337 古人學問無遺力,少壯工夫老始成.紙上得來終覺淺,絕知此事要躬行.南宋.陸遊<冬夜 ...

  3. Activity、Task、应用和进程

    2019独角兽企业重金招聘Python工程师标准>>> 为了阅读方便,将文档转成pdf http://files.cnblogs.com/franksunny/ActivityTas ...

  4. Activity的task相关

    上次我们讲到Activity的四种启动模式的时候,已经了解到一些关于task的技术,今天我再向大家介绍一下.task是一个具有栈结构的容器,可以放置多个Activity实例.启动一个应用,系统就会为之 ...

  5. Android之adb shell dumpsys activity获取task里面的所有actitiy

    android 如何在开启一个activity的时候清除所有前面的Activity intent intent = new Intent();intent.addFlag(Intent.FLAG_AC ...

  6. android Activity的Task Affinity lanchMode

    1.Activity和Task task就好像是能包含很多activity的栈. 默认情况下,一个activity启动另外一个activity时,两个activity是放在同一个task栈中的,第二个 ...

  7. 基础总结篇之三:Activity的task相关

    古人學問無遺力,少壯工夫老始成.紙上得來終覺淺,絕知此事要躬行.南宋.陸遊<冬夜讀書示子聿(yù)> 软件行业也是一样,多少前辈不遗余力的奋斗才出现了软件行业的繁荣的景象,其中已有不少成为 ...

  8. Android SDK 2.1 - Dev Guide - Best Practives - UI Guidelines - Activity and Task Design - 中文/Chinese

    转自:http://blog.csdn.net/sirdonker/article/details/5647625 Activity 和 task 的设计摘要 Activity 是 Android 应 ...

  9. Activity、Task、Application关系+Intent启动Flag

    什么是Android  Application? 简单来说,一个apk文件就是一个Application. 任何一个AndroidApplication基本上是由一些Activities组成,当用户与 ...

最新文章

  1. sql delete删除的数据怎么恢复_如何恢复按下Shift + DELETE键永久删除的文件和资料夹?...
  2. Python黑科技,教你学会Django系统错误监控
  3. Qt Creator 创建优化的3D场景
  4. JVM的内存结构,Eden和Survivor比例;JVM中一次完整的GC流程,对象如何晋升到老年代,说说你知道的几种主要的JVM参数;CMS 常见参数解析;.你知道哪几种垃圾收集器,各自的优缺点
  5. 再有人问你volatile是什么,就把这篇文章发给他
  6. 周记之琢磨下计算机网络(2018/10/22-2018/10/28)
  7. eleemnt-ui修改主题颜色
  8. 我所知道的几种display:table-cell的应用
  9. JVM——深入分析对象的内存布局
  10. 勿以善小而不为--PPP认证之CHAP与PAP的实现与区别
  11. Java中方法与数组
  12. 梁宁-产品思维30讲-痛点、爽点和痒点都是产品机会
  13. MySQL-数据库驱动程序的下载
  14. 太阳的光和灯光有什么区别_太阳光和灯光有什么区别
  15. 碰到文件夹损坏咋解决?
  16. 如何将html模板资源转为vuecli项目
  17. 实现数字手写图片识别(纯代码)
  18. Mac电脑卡顿的解决办法
  19. 编写一个随机抽奖程序php,基于PHP实现简单的随机抽奖小程序
  20. minSdk(API 29) deviceSdk(API 127)

热门文章

  1. python详细安装教程linux-Linux手动安装新版本Python教程(CentOS)
  2. python语言百度百科-Python 语言下数据驱动DDT的应用
  3. python对excel某一列求和-96、python操作excel求和
  4. python主要运用于-Python的8大主要应用领域,看看哪个是你的菜?
  5. python百度网盘-bypy-百度网盘Python客户端 linux
  6. python类型-python语言中的数据类型有哪些
  7. python线上培训多少钱-Python人工智能在线培训班学费多少钱?
  8. pythonexe32位-如何使用pyinstaller打包32位的exe
  9. python3教程-Python3 教程
  10. python可以做什么 知乎-python能做什么知乎