博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Android] Intent解析机制
阅读量:6551 次
发布时间:2019-06-24

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

hot3.png

Intent的解析:

在应用中,我们可以以两种形式来使用Intent:

1.1 显式Intent:指定了component属性的Intent(调用setComponent(ComponentName)或者setClass(Context, Class)来指定)。通过指定具体的组件类,通知应用启动对应的组件。

2.2 隐式Intent:没有指定comonent属性的Intent。这些Intent需要包含足够的信息,这样系统才能根据这些信息,在在所有的可用组件中,确定满足此Intent的组件。

对于直接Intent,Android不需要去做解析,因为目标组件已经很明确,Android需要解析的是那些间接Intent,通过解析将 Intent映射给可以处理此Intent的Activity、Service或Broadcast Receiver。

Intent解析机制

Intent解析机制主要是通过查找已注册在AndroidManifest.xml中的所有<intent-filter>及其中定义的Intent,通过PackageManager(注:PackageManager能够得到当前设备上所安装的

application package的信息)来查找能处理这个Intent的component。在这个解析过程中,Android是通过Intent的action、type、category这三个属性来进行判断的,判断方法如下:
1.1  如果Intent指明定了action,则目标组件的IntentFilter的action列表中就必须包含有这个action,否则不能匹配;
1.2  如果Intent没有提供type,系统将从data中得到数据类型。和action一样,目标组件的数据类型列表中必须包含Intent的数据类型,否则不能匹配。
1.3  如果Intent中的数据不是content:类型的URI,而且Intent也没有明确指定type,将根据Intent中数据的scheme(比如 http:或者mailto:)进行匹配。同上,Intent 的scheme必须出现在目标组件的scheme列表中。
1.4 如果Intent指定了一个或多个category,这些类别必须全部出现在组建的类别列表中。比如Intent中包含了两个类别:LAUNCHER_CATEGORY和ALTERNATIVE_CATEGORY,解析得到的目标组件必须至少包含这两个类别。

转载于:https://my.oschina.net/u/242041/blog/203715

你可能感兴趣的文章
微信支付开发(4) 交易通知
查看>>
为什么我的淘宝店铺动态评分清零了?
查看>>
Python web前端 06 运算符 循环
查看>>
关于SQL 导出脚本失败 及SQL 的重装
查看>>
VFP数据库主要命令的使用总结
查看>>
[Andriod官方训练教程]管理Activity的生命活动之开始一个Activity
查看>>
自定义Navigation按钮及Title
查看>>
Carmark算法,我的实现
查看>>
js获取当前日期时间“yyyy-MM-dd HH:MM:SS”
查看>>
Luogu P2613 【模板】有理数取余
查看>>
[Codeforces266E]More Queries to Array...——线段树
查看>>
Java EE思维导图
查看>>
OBS MAC 系统开发(基于mac OS X 10.12)
查看>>
python set dict tuple and list
查看>>
远程仓库里面有多个远程分支和本地的多个分支
查看>>
quilt
查看>>
数据挖掘-数据仓库
查看>>
block作为函数参数回调
查看>>
Handlebars.js,Json+ajax+拼html
查看>>
输入表
查看>>