BroadcastReceiver即广播接收者,android四大组件之一
一、简介
BroadcastReciver是用来接收各种消息机制并作出响应的处理的,主要用在应用程序之间的通信,比如:
发短信,打电话;
既然用在通信中那么至少应该有两个应用程序,一个发送方和一个接收方,而他们之间也会类似于钥匙
和锁的协议
广播接收者都需要继承基类BroadcastReceiver
二、详解
1.BroadcastReceiver的注册(接收方)
静态注册:需在清单文件中receiver节点中配置发送方发送的参数;不可销毁
动态注册:在代码中使用IntentFilter配置参数,不需要在清单文件中配置;可销毁
2.广播的类型(发送方)
无序广播:只要接收者配置的信息正确,那么就可以接收到,类似于用大喇叭广播一样,效率较高
sendBroadcast(intent);
intent:存放有配置信息和要传送的数据
有序广播:接收者有优先级的,优先级高的先接收到广播并且可以对广播过程中传播的数据做修改,
甚至是终止广播,然后优先级低一点的接收到,以此类推(优先级范围为-1000--1000)
在有序广播中可以指定一定可以接收到广播接收者
sendOrderedBroadcast(intent, receiverPermission, resultReceiver, scheduler,
initialCode, initialData, initialExtras)
intent:存放有配置信息和要传送的数据
receiverPermission:指令,接收者必须有允许才可接收到
resultReceiver:一定可以接收到的接收者
scheduler:自定义程序安排resultReceiver的回调,如果为null则在主线程中运行
initialCode:返回码
initialData:数据
initialExtra:额外的数据
3.广播接收者的特点
广播接收者可以在应用程序没有开启的情况下接收广播并且做出相应的处理,那么静态注册的广播接
受者就无法停止,这就需要动态注册广播了
4.特殊的广播事件
Android中有一些使用非常频繁的广播事件在清单文件中配置是不会生效的
电量变化,锁屏/解锁只能动态注册
5.实际应用
广播接收者的生命周期很短不能做耗时的操作,可以用广播接收者开启一个服务,在服务中开启子线
程来做耗时操作,否则回报anr(Application No Response)错误
三、小结
广播接收者在Android开发中用的挺多的,这些只是最基本的使用方法
学的再多也不如自己动手实践去理解代码的执行流程,还是要多思考,多敲代码