文档章节

Activity的启动模式

 梦想家Peng
发布于 2016/03/01 14:39
字数 545
阅读 13
收藏 1
点赞 1
评论 0

任务栈(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
博文 33
码字总数 15605
作品 0
深圳

暂无相关文章

Spring Cloud构建微服务架构—创建“服务注册中心”

创建一个基础的Spring Boot工程,命名为eureka-server,并在pom.xml中引入需要的依赖内容: <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-par......

itcloud ⋅ 14分钟前 ⋅ 0

拖动

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>event</title> <style> #box { width: 100px; height: 100px; background-color: aquamarine; position: absolute; } </style......

fyliujj ⋅ 16分钟前 ⋅ 0

es6 polyfill array

polyfill之javascript函数的兼容写法——Array篇 1. Array.isArray(obj) if (!Array.isArray) { Array.isArray = function(arg) { return Object.prototype.toString.call(arg) === '[objec......

球球 ⋅ 18分钟前 ⋅ 0

kibana启动异常

检查一下:kibana.yml 每一对key:value中,冒号之后应有空格。

增删改查1 ⋅ 20分钟前 ⋅ 0

js修改img的src属性刷新图片时的图片缓存问题

问题:上传一张图片,通过js更新src属性刷新图片使其即时显示时, 当img的src当前的url与上次地址无变化时(只更改图片,名称不变,不同图片名称相同)图片不变化(仍显示原来的图片) 但通过...

HaierBrother ⋅ 20分钟前 ⋅ 0

Mysql

1.Jdbc Url 设置allowMultiQueries为true和false mysql的批量更新是要我们主动去设置的, 就是在数据库的连接url上设置一下,加上* &allowMultiQueries=true *即可。 参数名称 参数说明 缺省...

瑟青豆 ⋅ 24分钟前 ⋅ 0

mysql导出导入表结构与数据

当我们需要进行数据迁移时,mysql自带的mysqldump会是最好的方式。 1.导出某张表的结构和数据 首先,我们应当使用服务器,打开终端,连接到所需要导出的表所在的服务器上。执行命令: mysqld...

hengbao5 ⋅ 24分钟前 ⋅ 0

世界杯也走向“比拼”大数据的时代

《日本经济新闻》6月19日报道称,俄罗斯足球世界杯已于6月14日揭开战幕。作为第21次举办的足球世界杯,如何活用大数据有可能成为决定各支球队胜负的重要因素。从对阵球队的分析到战术建议,还...

加米谷大数据 ⋅ 24分钟前 ⋅ 0

金额转为千分制,金额转中文大写

金额转关为大写 /** 数字金额大写转换(可以处理整数,小数,负数) */ function digitUppercase(n){ if(!n) reutrn "" let fraction = ['角', '分']; let digit = ['零', '壹', '贰', '叁', '肆...

YXMBetter ⋅ 27分钟前 ⋅ 0

开发利器JRebel部署SpringBoot项目

不要以为年纪轻轻就跌倒了人生谷底,未来还有更大的下降空间等着你。 idea下载和安装JRebel 激活JRebel 访问https://my.jrebel.com/ 使用facebook或twitter登录 勾选 Build project automati...

郑龙飞 ⋅ 33分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部