首页 理论教育 BroadcastReceiver组件的使用方法

BroadcastReceiver组件的使用方法

时间:2023-06-30 理论教育 版权反馈
【摘要】:BroadcastReceiver是一个专注于接收广播通知信息,并做出对应处理的组件。所有的接收器均继承自BroadcastReceiver基类。Broadcast Receive没有用户界面。onReceive中代码的执行时间不要超过5秒,否则Android会弹出超时Dialog对话框。

BroadcastReceiver组件的使用方法

一、BroadcastReceiver组件

在Android应用程序中,Broadcast Receiver与Activity,Service和Content Provider其他三大组件相同,都是以一段独立的Java程序代码存在于应用程序项目中。

BroadcastReceiver是一个专注于接收广播通知信息,并做出对应处理的组件。很多广播源自系统发出的通知(如通知时区改变、电池电量低、拍摄了一张照片、用户改变了语言选项等)。应用程序也可以进行广播,例如通知其他应用程序,一些数据下载完成并处于可用状态。

应用程序可以拥有任意数量的广播接收器,以对所有感兴趣的通知信息予以响应。所有的接收器均继承自BroadcastReceiver基类。

Broadcast Receive没有用户界面。然而,它们可以启动一个Activity来响应它们收到的信息,或者用Notification Manager来通知用户。通知可以用很多种方式来吸引用户的注意力(如闪动背灯、震动、播放声音等),一般是在状态栏上放一个持久的图标,用户可以打开它并获取消息。

Android中的广播事件有两种:一种是系统广播事件,例如,ACTION_BOOT_COMPLETED(系统启动完成后触发),ACTION_TIME_CHANGED(系统时间改变时触发),ACTION_BATTERY_LOW(电量低时触发),等等;另外一种就是自定义的广播事件。

二、BroadcastReceiver的使用步骤

(1)注册BroadcastReceiver:注册方式有静态注册和动态注册两种。静态注册就是在Android Manifest.xml文件中定义,注册的广播接收器必须要继承Broadcast Receiver;另一种动态注册是在程序中使用Context.register Receiver注册,注册的广播接收器相当于一个匿名类。这两种注册方式都需要使用intent-filter。

静态注册方法的程序如下:

动态注册方法的程序如下:

(2)发送广播事件:通过Context.sendBroadcast来发送,由Intent来传递注册时用到的Action。

(3)接收广播事件:当发送的广播被接收器监听到后,会调用它的onReceive()方法,并将包含消息的Intent对象传给它。onReceive中代码的执行时间不要超过5秒,否则Android会弹出超时Dialog对话框。

三、BroadcastReceiver的使用举例(www.xing528.com)

下面演示两个广播事件的使用。

1.网络状态变化

在某些场合网络状态发生变化,例如,用户浏览网络信息时网络突然断开,应当及时提醒用户网络已断开,要实现这个功能,可以接收“网络状态改变”的广播,即当由连接状态变为断开状态时,系统就会发送一条广播,接收到后再通过网络的状态做出相应的操作。下面就给出实现这个功能的具体操作。

建立Android项目NetworkStateReceiver,建立源文件NetworkStateReceiver.java,输入以下内容:

在项目文件Android Manifest.xml注册接收者:

因为在isNetwork Available方法中使用到与网络状态相关的API,所以需要声明相关的权限:

2.检测电量变化

全屏阅读软件时,用户就无法看到剩余的电量,需要为用户提供电量信息。这就需要接收“电量改变”的广播,然后获取电量百分比信息。

建立Android应用项目BatteryChangedReceiver,建立源文件BatteryChangedReceiver.java,输入以下内容:

在项目文件Android Manifest.xml注册接收者:

当然,有些时候要立即获取电量信息,而不是等电量改变的广播(如当阅读软件打开时立即显示电池电量),这时可以按以下的方式获取:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈