Android中Intent的匹配框架(一)

 最近在整理有关Intent方面的资料,相信对Intent的使用,以及IntentFilter的功能,每位程序员都已了解的都熟透了!

小弟只是想和大家分享一下Intent在框架层是如何匹配的。

 

intent匹配主要解决应用程序中没有指定Component名称的情况。PmS在初始化时,会从所有应用程序的 AndroidManifest.xml文件中读取intent-filter的值,然后建立一个内部数据结构,以后应用程序可以通过PackageManager提供的queryXXX()方法分别查询不同的Component的包信息

 

下面就以Activity的匹配过程为例说明匹配架构设计的思路,其他类型的匹配与此类似,有兴趣的可以自行研究。

 

 首先,PackageManger类中定义了4个query函数,分别用于匹配Framework定义的四种不同的Component,分别是Activity,Service,Receiver,ContentProvider

在PsM内部,分别定义了四个变量,PsM使用这四个变量分别保存不同类型Component的intent匹配相关的数据信息。其中所有匹配到Activity的intent-filter信息保存在ActivityIntentResolver内部类对象中;

同时,Pms内部提供了四个对应的query函数,这些函数和PackageManager定义的query()函数 一一对应。这些函数内部执行的操作正是从以上四个数据类中提取出匹配到的信息,并将这些信息按照PackageManager中定义的返回值类型重新组合,并返回。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值