4.3.3 意图机制在触发器组件中的应用

在Android的设计中,触发器组件的功能就是监听广播事件的Intent对象,并对其进行简单的解析和处理。调用组件调用Context.sendBroadcast或Context.sendOrderedBroadcast函数进行事件的广播,这些事件消息的载体就是Intent对象。

在Android系统的定义中,用于广播事件中Intent对象的Action项,与用于界面组件调用中Intent对象的Action项是完全分离的,以此来避免两者在理解上的混淆。

在触发器组件的构造中,不存在匹配组件选择的问题,广播本身的意义就在于通知到每个监听该事件的组件。如果是通过Context.sendBroadcast发出的普通广播事件,组件管理服务会以此构造所有与Intent相匹配的触发器组件,并发地通知并执行相关的操作;而如果是通过Context.sendOrderedBroadcast有序地广播事件,组件管理服务会先对所有备选触发器组件按照Intent Filter对象的优先级进行排序,逐一进行构造和处理。

对于冷插拔的触发器组件,其Intent Filter对象的配置和界面组件、服务组件一样,都是通过配置文件进行的。但如果是一个热插拔的触发器组件,Intent Filter对象往往是通过代码来构造的,比如:


//构造Intent Filter对象,并设置参数

IntentFilter filter=new IntentFilter();

filter.addAction("com.duguhome.test.action.FINISH");

//构造Broadcast Receiver

BroadcastReceiver receiver=new BroadcastReceiver(){

@Override

public void onReceive(Context context, Intent intent){

finish();

}

};

//将Broadcast Reciever对象与Intent Filter对象绑定,开始监听广播事件

registerReceiver(receiver, filter);