文档章节

Activity启动模式详解

YougaKing
 YougaKing
发布于 2017/02/27 16:45
字数 567
阅读 17
收藏 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
粉丝 5
博文 7
码字总数 6795
作品 0
西安
程序员

暂无文章

HTTPS is easy

HTTPS is easy https://www.troyhunt.com/https-is-easy/ HTTPS is easy! In fact, it's so easy I decided to create 4 short videos around 5 minutes each to show people how to enable ......

openthings
29分钟前
0
0
bugList 2

用户端: 1. 上传文件时,当选择:彩色-A3-双面时,第二个图片有bug 应改为 和第一个图片的类型相同 2. 确认打印时,三个下拉选目前有bug 应改为:根据后台配置的商家,group by计算出不同城...

勇恒
32分钟前
2
0
keras cnn 网咯 mnist 分类

搭建貌似比tf是简单很多。。。。。 from keras.datasets import mnistfrom keras.utils import np_utilsfrom keras.models import Sequentialfrom keras.layers import Dense, Activat......

阿豪boy
34分钟前
0
0
解决 /var/run/nginx.pid failed

nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory) sudo nginx -c /etc/nginx/nginx.conf nginx -s reload...

驛路梨花醉美
36分钟前
0
0
nginx负载均衡-ssl原理-生成ssl密钥对-nginx配置ssl

nginx负载均衡: 1.创建配置文件 vim /usr/local/nginx/conf/vhost/load.conf #添加以下内容: upstream qq_com #名字自定义,借助此模块定义多个IP,后面...

ZHENG-JY
36分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部