博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
什么是Intent
阅读量:6346 次
发布时间:2019-06-22

本文共 1599 字,大约阅读时间需要 5 分钟。

Intent负责在应用程序的主要部件——活动,服务,广播接收器(处理Android消息)之间传递消

息的信使对象

Intent是对要执行的操作的一种抽象的描述,它除了指定一个动作之外,Intent对象还包含完成

该动作所需的相关数据,以及规定的数据类型,常量,标志,甚至是和动作所需数据相关的附加
数据

由于Intent在Android应用程序组件之间提供了详细的数据并负责处理通讯结构,因此它也是一种

相对复杂的数据结构(对象)

在Android系统中,一共有三种类型的Intent对象可以用于活动,服务和广播接收器之间的通讯,

实际上,每个部件都有属于各自的一种Intent,它们之间不能够混用

 

基于Intent对象的消息可以包含下列7种不同的信息部件:

  1.组件名称(Component name):Intent及其动作需要传递到目标类的名称,通过包名称和类名称来指定

  2.动作(Action):预先定义的动作类型,如ACTION_DIAL表示拨打电话的动作

  3.数据(Data):需要进行操作的实际数据,例如要查看的数据库记录地址

  4.类别(Dategory):Android系统内置的Intent分为几种不同的类别,以便让它们更容易访问

  5.类型(Type):这个属性同MIME格式指定了数据的类型

  6.标志(Flags):通过Intent可以发送一些只有开/关两种状态的标志。标志一般不会用在通常的Intent中,不过如果是开发需要,可以通过标志来创建更复杂的Intent

  7.附加(Extras):在Intent中,这个参数可以包含任何上述字段以外的附加信息,通过创建非常复杂的Intent

 

在Intent解析上有显示Intent和隐式Intent之分

显示Intent通过使用Intent对象中的组件名称部分,即ComponentName字段来进行解析;有两种方式指定组件,一种

是通过setComponent()方法,它使用的是ComponentName对象:

  .setComponent(ComponentName);

另一种方式是使用setClass(Content,Class)方法提供准确的类名称来处理该Intent

 

隐式Intent就是在Intent对象中不指定组件名称的Intent,在这种情况下Android会根据Intent对象的其他参数来判断将

该Intent传递给那些代码来进行妥善的处理

Intent过滤器是在AndroidManifest.XML中通过<intent-filter>标签来进行表明的,它通过Intent对象的7个属性中的3

个动作——动作、数据和类别来对Intent进行过滤

Intent过滤器通过提供一组Intent对象结构的描述来匹配合适的Intent,并且通过一个priority属性来处理同时有多个匹配

的情况。如果灭有指定动作的过滤器,则Intent对象的动作参数不会被判断,而是进行对数据参数的判断。如果数据过滤器

也没有指定,则只有不包含数据的Intent会被匹配

对于基于数据特性而进行的Intent过滤,数据参数可以被分解为下面四个子类型:

  1.数据类型(Data Type):MIME数据类型,例如image/jpeg或者audio/MP3

  2.数据规格(Data schema):写成schema://主机地址:端口/路径这样的格式

  3.数据授权(Data authority):和服务器主机地址、端口一起指定

  4.数据路径(Data path):数据路径是一个指向数据未知的地址,例如:http://www.apress.com/datafolder/file1.jpg

 

转载地址:http://nmcla.baihongyu.com/

你可能感兴趣的文章
Hadoop_31_MapReduce参数优化
查看>>
linux运维常见英文报错中文翻译(菜鸟必知)
查看>>
[原][osgEarth]添加自由飞行漫游器
查看>>
代码审查 Code Review
查看>>
fastjson如何指定字段不序列化
查看>>
[日常] Go语言圣经--示例: 并发的Echo服务
查看>>
BZOJ1969: [Ahoi2005]LANE 航线规划(LCT)
查看>>
linux内存管理之malloc、vmalloc、kmalloc的区别
查看>>
GreenDao 数据库升级 连接多个DB文件 或者指定不同的model&dao目录
查看>>
M1卡破解(自从学校升级系统之后,还准备在研究下)【转】
查看>>
vue 访问子组件示例 或者子元素
查看>>
linux内核--自旋锁的理解
查看>>
银行卡的三个磁道
查看>>
OpenSSL 提取 pfx 数字证书公钥与私钥
查看>>
Keepalived详解(四):通过vrrp_script实现对集群资源的监控【转】
查看>>
CollapsingToolbarLayoutDemo【可折叠式标题栏,顺便带有CardView卡片式布局】
查看>>
CentOS7.4安装配置mysql5.7 TAR免安装版
查看>>
解决IE二级链接无法打开故障
查看>>
Windows phone应用开发[16]-数据加密
查看>>
SQL Server 迁移数据到MySQL
查看>>