4.3.2 意图机制在服务组件中的应用

服务组件的调用和绑定,都是基于意图机制来实现的。调用组件可以调用Context.startService函数启动符合需求的服务组件,也可以通过Context.bindService函数绑定对应的服务组件。

当组件管理服务收到调用组件发来的Intent请求后,会寻找所有符合其需求的服务组件,并按照Intent Filter的优先级进行排序。由于服务组件是在后台提供功能的,当出现多个匹配项时,无法像界面组件一样构造交互界面让用户来抉择(并且用户也很难理解不同的服务组件之间的差别)。因此,当出现多个服务组件与请求相符时,Android会默认选择优先级最高的组件作为实现组件。

在这种策略下,只要备选组件没有变化,对于同一个Intent对象而言,其实现组件是固定的。因此,组件管理服务会记录Intent对象与其实现组件的对照关系,当再次通过相同的Intent对象请求服务时,就可以跳过组件匹配计算,直接返回实现组件。