别告诉我你不认识Android中广播接收者(一)

作为一名Android开发人员,手中拿着的应该是Android手机,不然会不会觉得哪里有些不对劲呢?

当我们手中拿的Android手机电量不足时,屏幕上会提示一条电量不足的信息,这些信息为什么在手机电量不足时会自动弹出来呢?

在Android系统中,广播是一种运用在组件之间传递消息的机制,例如电池电量低时会发送一条提示广播。如果要接收并过滤广播中的消息,则需要使用广播接收者(BroadcastReceiver),什么是广播接收者呢?

广播接收者是Android四大组件之一,通过广播接收者可以监听系统中的广播消息,实现在不同组件之间的通信。接下来我们就来一起开启通往广播接收者知识海洋的旅程吧!

第一点:什么是广播接收者

为了监听一些广播事件,Android系统提供了一个广播接收者组件,该组件可以监听来自系统或者应用程序的广播。接下来通过下图的图例来显示多个广播接收者接收广播的过程。

根据上图,我们可以明白当Android系统产生一个广播事件时,可以有多个对应的BroadcastReceiver接收并进行处理。

在逻辑代码中这些广播接收者只需要在清单文件或者代码中进行注册并指定要接收的广播事件,然后创建一个继承自BroadcastReceiver的类,重写onReceive()方法,并在该方法中对广播事件进行处理即可。

第二点:广播接收者的创建

如果想要接收程序或系统发出的广播,则首先需要创建广播接收者。广播接收者的创建方式有两种,接下来我们来了解一下如何创建广播接收者。

 

1.第一种创建方式

在程序的包中创建一个MyBroadcastReceiver类继承自BroadcastReceiver,并重写onReceive()方法,具体代码如下所示。

 

MyBroadcastReceiver.java

 

2.第二种创建方式

选中BroadcastReceiver应用程序的包,右击选择【New】→【Other】→【Broadcast Receiver】选项,会弹出一个Configure Component页面,如下图这样。

【Class Name】表示要创建的广播接收者的名称

【Exported】表示是否接收当前程序之外的广播

【Enabled】表示广播接收者是否可以由系统实例化

【Source Language】表示编写源码所用的语言

【Exported】和【Enabled】默认是勾选的,【Source Language】的选项为Java和Kotlin,选择默认的Java选项即可,创建的广播接收者会在清单文件中注册。单击【Finish】按钮,广播接收者便创建完成。

 

创建好的MyReceiver.java文件中的内容如下所示。

MyReceiver.java

上面的代码中,创建的MyReceiver继承自BroadcastReceiver,默认重写构造函数MyReceiver()与方法onReceive()。

其中,onReceive()方法用于接收发送的广播信息,实现广播接收者的相关操作,该方法在此处暂未实现,程序默认抛出了一个未支持操作异常UnsupportedOperationException,在后续程序中实现onReceive()方法时,删除该异常即可。

好了,今天先讲解到这里,关于广播接收者的注册、自定义广播和广播类型的详细讲解请看下次书写,希望这篇文章能帮助到大家。