文档章节

Activity的启动模式

 梦想家Peng
发布于 2016/03/01 14:39
字数 545
阅读 14
收藏 1

任务栈(Task Stack)

-------------------------------

任务栈记录了当前应用程序里打开的若干个Activity,当按下Back键时,将根据任务栈里的Activity的顺序来决定将要被显示出来的Activity。

当新的Activity被激活时,伴随着“压栈”操作,刚原有任务栈里所有Activity都被“压”下去,同时,新的Activity将位于栈顶,而栈顶的Activity将是前台显示的Activity,即处于运行态。

当栈顶的Activity“出栈”时,该Activity将走向终止态,而栈内其它Activity将整体向上“浮出”,原来处于第2位的Activity将获得栈顶位置,则位于前台,处于运行态。


Activity的启动模式

-------------------------------

Activity的启动模式决定了Activity被激活时,如何添加到任务栈。

通过AndroidManifest.xml中的<Activity>节点的launchMode属性可以配置每个Activity的启动模式。

Activity的启动模式有:

1) standard:标准模式(默认)

  stardard模式的Activity可以被反复激活,且每次激活的都是新的Activity对象

2) singleTop:栈顶唯一

  如果Activity已经位于栈顶,再次激活时,不会创建新的Activity对象,反之,如果被激活的Activity没有处于栈顶,则还是会创建新的Activity对象

3) singleTask:栈内唯一

  被激活的Activity一定位于栈顶,且在栈内只有1个,即如果当前任务栈没有该Activity,则直接创建并且压栈,当被激活的Activity自然处于栈顶位置,显示在前台,如果当前任务栈中已经存在该Activity,则在栈中该Activity之上的所有Activity被强制出栈(被销毁),而被激活的Activity自然弹栈,获得栈顶位置,显示在前台。

4) singleInstance:单例

  被激活的Activity在任务栈绝对有且仅有1个,处于该模式下的Activity将独立存在于一个专属的任务栈中。

注意:Activity的启动模式(launchMode)被配置为singleTask或singleInstance时,Activity归属于哪个任务栈,取决于Activity的taskAffinity属性,该属性是通过AndroidManifest.xml进行配置的,具体可以参见TMOOC上的视频教程。


© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 34
码字总数 15605
作品 0
深圳

暂无文章

web打印控件 LODOP的详细api

web打印控件 LODOP的详细api

wangxujun59
22分钟前
1
0
从一次小哥哥与小姐姐的转账开始, 浅谈分布式事务从理论到实践

分布式事务是个业界难题,在看分布式事务方案之前,先从单机数据库事务开始看起。 什么是事务 事务(Transaction)是数据库系统中一系列操作的一个逻辑单元,所有操作要么全部成功要么全部失...

中间件小哥
24分钟前
5
0
荣登Github日榜!微信最新开源MMKV

MMKV 开源当日即登Github Trending日榜,三日后荣登周榜。MMKV 在腾讯内部开源半年,得到公司内部团队的广泛应用和一致好评。 MMKV 是基于 mmap 内存映射的移动端通用 key-value 组件,底层序...

腾讯开源
33分钟前
2
0
前端取色工具:jcpicker

http://annystudio.com/software/colorpicker/#jcp-download

轻量级赤影
35分钟前
1
0
Swift - 将图片保存到相册

import Photos func loadImage(image:UIImage) { UIImageWriteToSavedPhotosAlbum(image, self, #selector(saveImage(image:didFinishSavingWithError:contextInfo:)), ni......

west_zll
42分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部