Android组件|说Android广播(一)

本文涉及到的三个主体:

  • 广播意图
  • 广播发送方
  • 广播接收者
  • 广播接收者的登采访人员
1. 广播意图(broadcast intent 可简称为广播) 首先有必要简单说明下intent是什么。intent其实可以理解为Android系统为了方便信息可以在应用内组件之间或者在不同应用之间,进行传送,而创造出来的一个信息载体,数据信息可以通过装载到intent上来传送到其他地方。
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组件|说Android广播(一)
文章图片

结束,晚安!
下一篇文章见《说Android广播(二)》1
  1. 【Android组件|说Android广播(一)】简述普通广播和有序广播 ??

    推荐阅读