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,一经查实,立即删除!

相关文章

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

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

龟兔赛跑问题

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

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…

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

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

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

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

Readhat中升级openssh

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

Readhat中作安全基线

文章目录1.新建文件夹并上传脚本2.修改脚本中设置root2用户的密码字段3.添加脚本的可执行权限4.执行脚本5.尝试使用root2登录验证1.新建文件夹并上传脚本 在根目录下的/openssh8(没有则新建)中上传脚本: 2.修改脚本中设置root2用户的密码字…

WordPress插件开发-创建、停用、删除插件

插件存放目录 wp-content/plugins 创建一个插件 在plugins创建一个文件插件文件夹,命名最好加前缀,这个前缀可以使用你的名字或者你自己的域名,防止插件和别人重名,再创建一个PHP文件名字和你的插件名一样。我这里创建一个名为 yg…

Diango博客--11.Nginx + Gunicorn + Supervisor 方式部署

文章目录0.部署前准备1.创建一个超级用户2.更新 SQLite33.安装 Python3 、pip3.6以及 Pipenv4.部署代码5.使用 Gunicorn6.启动 Nginx 服务器7.配置 Nginx8.关闭 DEBUG 模式,收集静态文件9.使用 Supervisor管理 Gunicorn 进程10.使用 CDN 加快 Bootstrap 和 jQuery 的…

StringBuilder类

1.1 StringBuilder类概述StringBuilder:是一个可变的字符串。字符串缓冲区类。 String和StringBuilder的区别:String的内容是固定的StringBuilder的内容是可变的1.1.1 拼接字符串耗费内存原因:每次拼接都会产生新的字符串对象,而利用StringBuilder来拼接字符串自始至…

如何使用搜索技巧来成为一名高效的程序员

没有人是完全独立的孤岛,每个人都是整体的一部分。—— 约翰多恩对于缺乏编程知识的人来说,完全有可能编写一个网页或小程序。如果在用Google搜索相关示例时幸运的话,可以搜到现成的代码。即使是经验丰富的程序员,通常也会为了节省…

linux系统优化思路

文章目录一. 影响linux性能的因素1.系统硬件资源2.操作系统相关资源3.应用程序软件资源二. 分析系统性能涉及的人员1.Linux运维人员2.系统架构设计人员3.软件开发人员三. 系统性能分析工具四.思路总结一. 影响linux性能的因素 1.系统硬件资源 1)cpu 2)…

30分钟,让你成为一个更好的程序员

我相信激励是非常重要的。这也是为什么我常常把时间管理(这些书激励我不管改进我的时间管理方法)的书和软件开发拿出来看看。我最近刚看完一本 书,“Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman”。这本书推动我…

如何启用计算机的远程服务,远程桌面服务,教您怎么打开远程桌面服务

远程桌面可以通过控制另一台电脑的功能,让网络管理员可以在家中安全的控制单位的服务器,而且这个功能是系统内置的,所以比使用其他第三方的远程控制工具更方便。那么我的重点来了,我今天就教你们怎么打开桌面远程服务,…

pipenv相关指令

pip install pipenv 安装pipenv pipenv install 创建虚拟环境 (项目根目录下) pipenv shell     进入虚拟环境(如果不存在,则创建并进入虚拟环境) pipenv install flask   安装模块 pipenv uninstall flask 卸…

Vmware上安装RedHat Linux 7.3操作系统手册

文章目录1.点击“创建新的虚拟机”,勾选“自定义”选项,点击一步;2.默认选择最高版本的workstations,点击下一步;3.选择“稍后安装操作系统”,点击下一步;4&a…

软件工程15 个人阅读作业1

Task1:注册个人博客账号 个人博客地址 https://www.cnblogs.com/bmr666/ Task2:注册码云账号 码云账号 https://gitee.com/bmr666 Task3:完成博客-阅读与思考 阅读参考材料,并回答下面几个问题: (1&#xf…

Windows Server 2008操作系统安装手册

文章目录1.输入语言和其他首选项,然后单击“下一步”继续;2.点击“现在安装”,启动安装程序;3.选择要安装的操作系统,这里选择Windows Server 2008 R2 Enterprise(完全安…

云计算机有哪些特征,你知道云计算有哪些核心特征吗?

你知道云计算有哪些核心特征吗?下面跟小编一起来了解下吧!!!1、敏捷:使用户得以快速的,且以低价格的获得技术架构资源。2、应用程序界面API的可达性是指允许软件与云以类似“人机交互这种用户界面设施交互相所相一致的方式”来交互。云计算系统典型的运…