android打印intent flag,Android flag详解

Android flag详解

Android flag详解

一.Flag标志位

在阅读源码的时候经常发现有一些标志属性使用一些位操作来判断是否具有该标志,增加标志或者去除标志。

如:

二.addFlags (int flags)和setFlags (int flags)区别

Public Intent addFlags (int flags)

增加额外的标志到Intent(或者已经存在的flags值)

参数 flags 需要设置的新的flags

Returns(返回值)

返回相同Intent对象,用来将多个调用链接成一个调用的声明

public Intent setFlags (int flags)

设置特定的flags去控制Intent如何执行。大部分的values 依赖于正在被执行的Intent组件的类型,特别是FLAG_ACTIVITY_* 这些flags全部用在Context.startActivity() 和

FLAG_RECEIVER_* 这些flags全部用在 Context.sendBroadcast().

具体内容详情看task和back stack

参数 flags 设置要求的flags

Returns(返回值)

返回相同Intent对象,用来将多个调用链接成一个调用的声明

三.相关知识的理解

Task

Task就是一个任务栈,里面用来存放Activity,第一个进去的(Activity)处于栈的最下面,而最后创建的(Activity)则处于栈的最上面。从Task中取出(Activity)是从最顶端取出,也就是说先进后出,后进先出。而Activity在Task中的顺序是可以控制的,在Activity跳转时用到Intent Flag可以设置新建Activity的创建方式。

Back Stack

字面意思,是回退栈的意思,它属于数据结构中栈的一种。当从一个Activity 跳到另一个Activity的时候,如果不进行特殊的处理,就会有Activity被压入栈。当回退栈为空的时候,表示当前,已经到达了Lancher。因此,我们就可以知道BackStack就是一个存储Activity的容器,一般情况下,每需要执行一个Task,都至少有一个回退栈,这个容器中也至少有一个Activity实例。

LanchMode的作用和使用方法

点击以下文章:安卓启动Launch mode

例子:

在已经启动A,B,C,D四个Activity的情况下。再启动C的时候,不希望是ABCDC,而是AB,而且B上的数据需要保留

Intent it = new Intent(D.this,B.class);

it.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//设置可以关掉它所跳到的界面之外已经开启的activity在这里是把C关闭

it.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);//设置不要刷新即将跳转的页面

D.this.startActivity(it);

四.各Flag(标志)属性 详解

FLAG_GRANT_READ_URI_PERMISSION

如果设置了,Intent的接受者将被准许执行read操作(Intent 携带的URI数据和任何Clipdata中特定的URIs数据)的权限。

FLAG_GRANT_WRITE_URI_PERMISSION

如果设置了,Intent的接受者将被准许执行write操作(Intent 携带的URI数据和任何Clipdata中特定的URIs数据)的权限。

FLAG_GRANT_PERSISTABLE_URI_PERMISSION

当结合使用 flag_grant_read_uri_permission 和/或 flag_grant_write_uri_permission,URI权限授予可以坚持在设备重新启动直到明确撤销 用revokeuripermission(URI,int)。

FLAG_GRANT_PREFIX_URI_PERMISSION

当结合使用 flag_grant_read_uri_permission 和/或 flag_grant_write_uri_permission,URI权限授予适用于任何前缀匹配不同于原始的授予的URI。

FLAG_DEBUG_LOG_RESOLUTION

使能够使用调试功能的flag。设置之后,日志信息将在intent处理过程被输出,为了告诉你最后的解决列表被发现已创建。

FLAG_FROM_BACKGROUND

可以由调用者设置,以指示此意图来自后台操作,而不是来自直接用户交互.。

FLAG_ACTIVITY_BROUGHT_TO_FRONT

这个flag不能正常地被应用程序代码设置,而是系统为你设置由于在 launchMode 设置为singleTask模式

FLAG_ACTIVITY_CLEAR_TOP

如果已设置,并且正在启动的活动已经在当前任务(backstack)中运行,那么,而不是启动该活动的新实例,而且它上面的所有其他活动都将被关闭,而这个意图将作为一个新的意图传递到(现在的顶部)旧活动中.。

FLAG_ACTIVITY_NEW_TASK

设置此标志使activity将成为此历史堆栈上新任务的开始

1.如果D这个Activity在Manifest.xml中的声明中添加了Task Affinity,系统首先会查找有没有和D的Task Affinity相同的Task栈存在,如果有存在,将D压入那个栈

2.如果D这个Activity在Manifest.xml中的Task Affinity默认没有设置,则会把其压入栈1,变成:A B C D,这样就和标准模式效果是一样的了。

禁用掉系统默认的Activity切换动画。

FLAG_ACTIVITY_NO_HISTORY

设置此标志activity将不添加到回退栈(backStack)

3b81245421336fccd3cce7accd15eec2.png

FLAG_ACTIVITY_NO_USER_ACTION

设置此标志,将阻止onuserleavehint()正常回调发生在当前最前的活动,在它被停下来作为新启动活动被带到前面。

30ebcc27f803728945ca9bd7156284c7.png

FLAG_ACTIVITY_PREVIOUS_IS_TOP

如果设置并使用此意图从现有的一个activity a启动到新activity b,新avitivity b将不会被视为栈顶而是activity a,而是决定是否新意图传递到顶部而不是启动新的活动。

FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

设置此标志使这个活动要么开始在一个新的任务或带到现有的任务的顶部,那么它将被启动作为任务的前门。

FLAG_ACTIVITY_REORDER_TO_FRONT

如果在通过 Context.startactivity()去设置/启动一个Intent,如果需要启动的activity已经运行,此标志使被启动的活动被带到任务的历史堆栈的前面.。

bc4e7fde27823b46df24eb0f5ce9beff.png

FLAG_ACTIVITY_SINGLE_TOP

如果设置,activity将不会被启动如果其正在backstack的栈顶

c7105500fbd89999a4b2af8277ba2f00.png

FLAG_ACTIVITY_TASK_ON_HOME

如果在通过 Context.startactivity()去设置/启动一个Intent,此flag将使新启动任务置于当前活动任务的顶部(如果只有一个task时)。

3f2f66ddcb43b492babca171ebfd8d11.png

FLAG_RECEIVER_REGISTERED_ONLY

如果设置,当发送一个广播只有注册接收器将被调用,没有BroadcastReceiver组件将被启动。

FLAG_RECEIVER_FOREGROUND

当发送广播的时候设置了这个标志,会允许接收者以前台的优先级运行,有更短的时间间隔。正常广播的接受者是后台优先级,不会被自动提升。

FLAG_RECEIVER_REPLACE_PENDING

如果在发送广播时设置了这个标志,那新的广播会替换掉那些已存在的相同广播。相同的定义是通过Intent.filterEquals方法对两个广播的Intent处理返回true。 当匹配到相同的,新的广播和对应的接收器会将待发送的广播列表中已存在的替换掉,在列表中保留同样的位置。这个标志通常被粘性广播(Sticky Broadcast)使用,只保证将最新的广播的值传递给接收器。

Android flag详解相关教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452476.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人机界面设计

1.系统响应时间 系统响应时间指从用户完成某个控制动作(例如,按回车键或单击鼠标),到软件给出预期的响应(输出信息或做动作)之间的这段时间。 系统响应时间有两个重要属性,分别是长度和易变性。 1)长度:时间过长&#…

GeoHash资料

geohash基本原理 转载于:https://www.cnblogs.com/hyl8218/p/9111410.html

开启市场新格局 且看新华三计算与存储新品发布会

全球领先的新IT解决方案领导者新华三将于8月31日在北京钓鱼台国宾馆举办“新IT 新动能 新格局 新华三下一代计算与存储发布会”,重磅发布服务器和存储的全线新品。 2017年初,新华三集团正式推出了“应用驱动 云领未来”的新IT战略。在这一战略指引下&…

Centos7更新 SQLite3至版本3.29.0

文章目录1.创建 src 目录并进到这个目录2.下载 sqlite3 源码并解压安装3.替换系统低版本 sqlite31.创建 src 目录并进到这个目录 fxd用户下: mkdir -p ~/src cd ~/src 2.下载 sqlite3 源码并解压安装 fxd用户下: wget https://sqlite.org/2019/sqlite…

开发人员必学的5门课程

越来越多的Web开发人员通常都会问一些同样的问题。比如:哪一种开发语言最重要?初级开发人员的薪金会是多少?公司提供的免费培训有用吗?如何评估一个新的项目?尽管这些问题都很重要,但是开发人员往往对其他人…

android 响应类型,android – Retrofit 2 RxJava – Gson – “全局”反序列化,更改响应类型...

正如Than所说,使用拦截器的解决方案并不是那么好.我已经设法用一个Rx变压器来解决这个问题.我还添加了自定义api异常,当出现问题时我可以抛出它并在onError中轻松处理它.我认为它更强大.响应包装器:public class ApiResponse {private boolean success;private T da…

龟兔赛跑问题

题目 乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟&#x…

过程设计的工具

描述程序处理过程的工具称为过程设计工具,它可以分为图形、表格和语言3类。不论是那类工具,对他们的基本要求都是提供对设计 无歧义的描述,也就是应该能够指明控制流程、处理功能、数据组织以及其他方面的实现细节。从而在编码阶段能够把对应…

Centos7中安装python3.7、pip3以及pipenv(亲测有效)

文章目录1.安装python3.7以及pip32.使用pip3安装pipenv时pip报错3.使用pip3安装pipenv时出现ReadTimeoutError4.查看pipenv版本报错1.安装python3.7以及pip3 1)首先来安装依赖 yum -y install gcc gcc-c yum -y groupinstall “Development tools” yum install openssl-deve…

成功人士都是这样逼出来的

研究过很多很多成功人士的成才之路,发现这些人和我们普通人其实没有什么区别,不过,这些人用老祖宗的话说是“天将降大任于斯人也,必将苦其心志,劳其筋骨,饿其体肤,空乏其身,所以动心…

Linux下网卡绑定模式

Linux bonding驱动一共提供了7种模式,它们分别是:balance-rr 、active-backup、balance-xor、broadcast、802.3ad、balance-tlb、balance-alb。 balance-rr or 0:轮询模式,提供负载平衡和容错。该模式下两个网口都工作 active-…

Unity4.6证书激活问题

第一次运行的激活问题安装好Unity4.6之后首次启动会自动连网,但是会出现error loading page错误,SSL peer certificate or SSH remote key was not OK。如下图所示: 点OK就退出了。再启动一遍也是一样的。 这时可以先暂时断一下网&#xff0c…

Readhat中挂载yum源

文章目录1.链接物理镜像2.查看原始挂载目录3.挂载4.新建iso.repo5.查看挂载目录1.链接物理镜像 vmware控制台中,勾选设备状态成“已连接”,会在桌面生成镜像图标。 2.查看原始挂载目录 输入以下指令: [rootlocalhost ~]# df -h Filesystem…

面向数据结构设计的基本思想

Jackson 方法的软件设计过程是从数据结构入手,由数据结构之间的关系导出程序结构,这使软件系统的开发“有章可循”。尤其这一方法特别适合于以数据为主,“计算”较简单的数据处理系统。因此可称其为“面向数据的方法”。由于这一技术未提供对…

html图片分四面切割播,CSS3切割轮播图

* {margin:0;padding:0;}.view {width:560px;height:300px;margin:200px auto;position:relative;}.box {width:100%;height:100%;list-style:none;background-color:black;position:absolute;/* 开启3d效果 */transform-style:preserve-3d;}.box li {width:25%;height:100%;po…

知其所以然地学习(以算法学习为例)

其实下文的绝大部分内容对所有学习都是同理的。只不过最近在正儿巴经地学算法,而后者又不是好啃的骨头,所以平时思考总结得就自然要比学其它东西要多一些。 问题:目前几乎所有的算法书的讲解方式都是欧几里德式的、瀑布式的、自上而下的、每…

Win10安全特性之执行流保护

腾讯电脑管家 2015/02/04 15:070x00 背景微软在2015年1月22日公布了windows10技术预览版,Build号:9926。电脑管家反病毒实验室第一时间对其引入的新安全特性进行了深入分析。众所周知,漏洞利用过程中攻击者若要执行恶意代码,需要…

【Java】 大话数据结构(1) 线性表之顺序存储结构

本文根据《大话数据结构》一书,实现了Java版的顺序存储结构。 顺序存储结构指的是用一段地址连续的存储单元一次存储线性表的数据元素,一般用一维数组来实现。 书中的线性表抽象数据类型定义如下(第45页): 实现程序&am…

程序复杂程度的定量度量

对程序复杂程度进行度量的目的 1.把程序的复杂程度乘以适当常数即可估算出软件中错误的数量以及软件开发需要用的工作量, 2.定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣; 3.程序的定量的复杂程度可以作为模块规模的精确限度。 …

Readhat中升级openssh

1.挂载yum源(镜像) 如何挂载yum源(镜像),在本人的另外一篇博客中,请戳这里 2.安装升级所需依赖 由于升级ssh需要安装依赖,这里提前将所需依赖安装 指令: yum install -y zlib-dev…