文档章节

Activity启动模式详解

YougaKing
 YougaKing
发布于 2017/02/27 16:45
字数 567
阅读 18
收藏 0

学习Activity的启动模式之前,首先要明白Android中任务和返回栈的概念。Android官方API指南:任务是指在执行特定作业时与用户交互的一些列Activity。这些Activity按照各自的打开销魂许排列在堆栈(即返回栈)中。

任务可以理解为就是一系列Activity,返回栈就是存放Activity的栈堆。返回栈最重要的一点:即返回栈中的Activity永远不会重新排列。

启动模式(launchMode)

在清单文件声明Activity时,使用<activity>元素中的launchMode属性 指定Activity如何与任务关联。launchMode属性启动模式有四种。

“standard” 默认模式

系统在启动Activity的任务中创建Activity的新实例并向其传送intent。Activity可以多次实例化,而每个实例均可属于不通的任务,并且一个任务可以拥有多个实例。

standard 模式的Activity在API21以下有不同的表现。启动Activity的intent如果来自同一个应用,API21上下的表现是一样的。如果启动Activity的intent来自不同的应用,API21以下Activity将和发送intent的Activity处于同一个人任务当中。API21及以上会创建一个新任务,同时Activity将作为新任务的根Activity。

“singleTop” 

singleTop模式基本和standard模式一样,唯一的区别是,启动的Activity已经处于返回栈栈顶,此时不会创建新的Activity实例,而是直接调用该activity实例的onNewIntent()方法。

”singleTask“

系统创建新任务并实例化位于新任务底部的Activity。如果该Activity的一个实例已经存在于一个单独的任务中,则系统会通过调用现有实例的onNewIntent()向其传递intent,而不创建新实例。

singleTask模式关键就在于是否设置taskAffinity

<activity
    android:name=".launchMode.SingleTaskActivity"
    android:launchMode="singleTask"
    android:taskAffinity="">
</activity>

如果设置了taskActivity就会创建新任务,否则并不会创建新任务。不过不管是否创建新任务,如果Activity实例已经存在任务中都回调用onNewIntent()向其传递intent,同时弹出所有在次Activity实例之上的activity。

"singleInstance"

 

 

© 著作权归作者所有

共有 人打赏支持
YougaKing
粉丝 6
博文 7
码字总数 6795
作品 0
西安
程序员

暂无文章

IDEA 鼠标跳到下一行

敲代码时有时会出现这样的情况,鼠标在图中的位置,还需要手动将鼠标移动到这行的末尾然后再回车才能到新的一行。 用【Shift + Enter】,可以【IDEA新建一行,并且光标移到新行】...

karma123
24分钟前
3
0
在Kubernetes集群中部署ownCloud云盘系统

ownCloud ownCloud is a file sharing server that puts the control and security of your own data back into your hands. 参考 建立自己的共享云盘 - 使用ownCloud 远程访问家里机器的文件......

openthings
26分钟前
2
0
Python编写的以太坊虚拟机的新实现Py-EVM

Py-EVM是用Python编写的以太坊虚拟机的新实现。目前github上695个star,正在积极开发中,但正在通过以太坊/测试提供的测试套件快速推进。我们感谢有Vitalik和现有的PyEthereum代码,使得我们...

geek12345
28分钟前
1
0
(2)集成element-ui

(2)集成element-ui 1 安装element-ui依赖 cnpm install --save element-ui 2 按需引入 借助 babel-plugin-component,我们可以只引入需要的组件,以达到减小项目体积的目的。 首先,安装 ...

neumeng
32分钟前
2
0
linux下tree命令的用法解释

tree命令,主要功能是创建文件列表,将所有文件以树的形式列出来 linux下的tree就比较强大了,但一般系统并不自带这个命令,需要手动下载安装。 安装 : 1 yum -y install tree -a 显示所有文...

嘘嘘者
46分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部