Intent匹配规则

139 阅读1分钟

Intent"意图、意愿"

Intent是Andoird四大组件除ContentProvider之外,其他三个必用的。

Intent属性

  • 1.Component Name"组件名称",intent可以分为两种,显性和隐性,如果标明了该值,并且指定了packagename就是显性。
  • 2.Category"种类"
  • 3.Action"动作":最常用于广播,表明一些事件发生。
  • 4.Data"数据"
  • 5.Extras"附加":可以存储一些值,键值对形式。
  • 6.Flags"标志":类似于LaunchMode启动模式

Intent匹配规则

匹配流程

  1. 组件注册:注册分为静态注册和动态注册
  2. 发起Intent
  3. 系统将Intent和对应组件类型(Activity、Service)所有Intent-filter进行匹配。
  4. 影响匹配结果的三个因素只有Category、Action、Data。

data的匹配最为复杂,其他两个的值很好理解,Data内容包含两部分,MIME Type和URI

  1. MIME Type:作用是指明某段数据的类型
  2. URI:是某种资源的全球唯一定位标志

Intent匹配源码

以startActivity为例子,最终执行匹配的代码是由ActivityIntentResolber的queryIntent调用IntentFilter的match方法。

结尾疑问:系统将是怎么将所有的intent-filter搜集匹配的,是查询清单文件么?