文档章节

理解android中Activity和Task的关系

Koon.LY
 Koon.LY
发布于 2012/08/29 15:12
字数 501
阅读 3780
收藏 9

Android的每个Activity都运行在堆栈中,一个Task栈可以有多个Activity,同一个Activity也可以在不同的Task栈中。

栈顶的Activity是用户当前正在进行交互的Activity。用户不断返回的时候,栈顶的Activity会不断弹出直到用户回到桌面或者其他启动这个Activity的组件,那么这个Task就会销毁了。

Task是分前台和后台的。一般当用户启动一个新的Task或者按Home键回到桌面时,Task就会被转入后台。如果用户长时间离开某个Task,这个Task只保留root Activity,其他的都会被销毁。

Activity的LaunchMode属性可以指定Activity和Task之间的关系。

android:launchMode="standard"
            android:launchMode="singleTop"
            android:launchMode="singleTask"
            android:launchMode="singleInstance"

系统默认是standard的,即同一个Activity可以被实例化多次。

singleTop是指如果Task栈现在的顺序是A,B,C,D。那么如果现在传来一个intent是启动D的,那么D是会调用onNewIntent来接受传来的intent,而不会重新启动D。所以Task栈的顺序还是A,B,C,D。

singleTask是指Activity只能实例化一次并且为它创建一个新的Task,如果Activity已存在其他Task中就执行Activity的onNewIntent方法。当前Activity作为Task的root Activity,从root Activity启动的Activity会push进同一个Task中。

singleInstance是指Activity只能实例化一次并且独占一个Task。其他与singleTask一样。

除了可以在androidmanifest文件中定义Activity和Task的关系之外,在启动Activity时传入的Intent中也可以设置标识符来修改Activity的启动模式

FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_SINGLE_TOP
FLAG_ACTIVITY_CLEAR_TOP

FLAG_ACTIVITY_NEW_TASK和singleTask对应

FLAG_ACTIVITY_SINGLE_TOP和singleTop对应

FLAG_ACTIVITY_CLEAR_TOP的话是指如果启动的Activity已存在,则将该Activity之上的Activity全部销毁掉。即栈A,B,C,D现在有传来intent启动Activity B,则C和D都将被finish掉,然后启动Activity B。

© 著作权归作者所有

Koon.LY
粉丝 0
博文 45
码字总数 6639
作品 0
广州
私信 提问
加载中

评论(1)

r
rigortek
各个task之间关系是如何组织的?
android基础知识05:四大组件之activity 02

本系列开始介绍activity的四大组件,主要是整理网络上关于这一部分的相关资料。包含如下三篇文章: android基础知识05:四大组件之activity 01:基础知识 android基础知识05:四大组件之act...

迷途d书童
2012/03/23
211
0
Activity、Task、应用和进程

很想弄清楚启动一个Activity和Task(任务)的关系,网上也有很多相关资料,由从源码来具体分析的,也有针对launchmode来分析,但都不是自己的,理解起来总不是那么容易,为此,尝试着自己去理解...

蜗牛TT
2012/09/15
388
0
Android Intent Flag的介绍

一、Activity和Task(栈)的关系   Task就像一个容器,而Activity就相当与填充这个容器的东西,第一个东西(Activity)则会处于最下面,最后添加的东西(Activity)则会在最低端。从Task中取...

茶码古道
2012/09/10
234
0
Android 开发中 Activity 的正确打开方式

adb shell dumpsys activity 输入这个命令可以得到一个清晰的 Task 视图,比如你有多少个 Task ,哪些 activity 在其对应的 Task 等相关信息。 下图是一张运行这个命令的输出截图。 从图中可...

花仲马
2016/08/24
3.7K
6
android之Task和Back Stack(回退栈)

通常一个应用程序包括多个Activity,我们在使用程序是,一个Activity到另一个Activity,又到别的Activity,然后我们按下返回键又能按打开的顺序,倒叙返回。android中是怎么做到的?Task和B...

墨宇hz
07/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS--列表

一、列表标识项 list-style-type none:去掉标识项 disc:默认实心圆 circle:空心圆 squire:矩形 二、列表项图片 list-style-img: 取值:url(路径) 三、列表项位置 list-style-position:...

wytao1995
今天
6
0
linux 命令-文本比较comm、diff、patch

本文原创首发于公众号:编程三分钟 今天学了三个文本比较的命令分享给大家。 comm comm 命令比较相同的文本 $ cat charabc$ cat chardiffadc 比如,我有两个文件char和chardiff如上,...

编程三分钟
今天
7
0
QML教程

https://blog.csdn.net/qq_40194498/article/category/7580030 https://blog.csdn.net/LaineGates/article/details/50887765...

shzwork
今天
5
0
HA Cluster之5

对于使用heartbeat v2版的CRM配置的集群信息都是保存在一个名为cib.xml的配置文件中,存放在/var/lib/heartbeat/crm/下。CIB:Cluster Information Base,由于xml文件配置不是那么方便,所以...

lhdzw
今天
6
0
玩转Redis-Redis基础数据结构及核心命令

  《玩转Redis》系列文章主要讲述Redis的基础及中高级应用,文章基于Redis5.0.4+。本文主要讲述Redis的数据结构String,《玩转Redis-Redis基础数据结构及核心命令》相关操作命令为方便对比...

zxiaofan666
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部