本文涉及到的三个主体:
- 广播意图
- 广播发送方
- 广播接收者
- 广播接收者的登采访人员
broadcast intent 就是一个被发送方创建并发出,可以被多个登记了广播接收者的登采访人员所接收。所以起到了传递信息和广播的作用。
比如有:系统类型广播、自定义类型广播。
**系统类型广播:**设备启动完成(BOOT_COMPLETED)、WiFi状态变更、软件安装卸载、电话接打、短信收发,等等。
**自定义类型广播:**由应用自行定义的广播,功能一样,只是发送方是应用自身,而非系统。
- 创建广播的代码:
Intent broadIntent = new Intent();
broadIntent.setAction("action_aaa");
context.sendBroadcast(broadIntent);
2. 广播发送方 就是创建broadcast intent的组件,一般是应用组件(Activity/Fragment/Service)或Android系统。
- 调用代码:
context.sendBroadcast();
context.sendOrderBroadcast();
3. 广播接收者(Broadcast Receiver) broadcast receiver是Android系统的四大组件之一。接收来自系统或者应用发出的broadcast intent,并进行处理。分为动态broadcast receiver和静态的standalone receiver,后者需要在清单文件中登记。
- 代码定义:
class XXXReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
if(intent.getAction().equals(DvbContents.FilterAction.ACTION_SEARCH_FINISHED_NOTIFY){
// To handle bussiness}
}
}
}
4. broadcast receiver的登采访人员 毫无疑问,登采访人员指的就是需要利用broadcast receiver来做一些事情的那个组件。如,Activity、Fragment、Service等,一般来说这类组件都是采取动态登记的方式。而静态注册的则针对的是standalone receiver,其登采访人员则是Android系统,此类receiver是在AndroidManifest.xml中进行登记声明的。
- 声明代码:
// standalone receiver在AndroidManifest.xml中静态注册
// broadcast receiver在应用组件如Activity中进行登记,最后结束时需要撤销登记。
// 在Activity onCreate()中
XXXBroadcastReceiver receiver = new XXXBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("action_aaa");
intentFilter.addAction("action_bbb");
context.registerReceiver(receiver, intentFilter);
// 在Activity onDestroy()中撤销登记
context.unregister(receiver);
《 广播的整个处理过程 》
文章图片
结束,晚安!
下一篇文章见《说Android广播(二)》1
- 【Android组件|说Android广播(一)】简述普通广播和有序广播 ??