广播接收者概念
1.广播接收者概念(BroadCastReceiver)为什么需要广播接收者?
BroadCastReceiver可以接受SendBraodCast方法发出来的广播,可以使用Intent传递数据,是一个抽象类。
广播的特点 数据传递的方向是 单向的,需要调到固定的频率。
作用范围有限,只有在当前手机里有效。
系统将一些重要的操作 通过广播的形式通知给所有应用。
广播接收者编码流程-静态注册
1.创建Java类继承BroadCaseReceiver
2.重写 onReceiver方法
3.清单文件注册receiver
4.某些广播需要授权 添加相对应的uses-permission
广播接收者编码流程-静态注册
1.创建Java类继承BroadCaseReceiver
2.重写 onReceiver方法
3.创建BroadCaseReceiver 广播接收者对象,并且创建IntentFilter意图过滤器对象添加需要监听的action进行匹配广播,然后调用registerBroadCastReceiver(BroadCaseReceiver,IntentFilter)方法注册广播接收者.
4.在当前Activity结束时需要注销动态注册的广播接收者,重新onDestory方法,并在方法中调用unRegisterBroadCast(BroadCaseReceiver)注销广播接收者。
发送无序广播
在程序中,创建intent对象并且通过调用sendBroadCase来发送广播。
接收无序广播
1.创建java类并且继承 BoadCaseReceiver 并且实现 onReceiver方法
2.在程序清单application元素中注册receiver,其中需要有intent-filter元素来过滤事件,intent-filter中要有需要匹配的action,为action的name属性。因为发送广播或者其他intent意图时,都需要有对应的action(显示意图除外)的name属性做匹配。
当事件被触发后,会经过intent-filter 来过滤 是否有与之匹配的action name.
3.当被匹配到后会调用其中的onReceiver方法。
发送有序广播
在程序中,创建intent对象并且通过调用sendOrderedBroadCase来发送有序广播。
接收无序广播
1.创建java类并且继承 BoadCaseReceiver 并且实现 onReceiver方法
2.在程序清单application元素中注册receiver,其中需要有intent-filter元素来过滤事件,intent-filter中要有需要匹配的action,为action的name属性。因为发送广播或者其他intent意图时,都需要有对应的action(显示意图除外)的name属性做匹配。
当事件被触发后,会经过intent-filter 来过滤 是否有与之匹配的action name.
3.需要在配置 intent-filter 的属性 priority(整数数值越大越优先)来表明顺序
4.当被匹配到后会调用其中的onReceiver方法。
5.可以调用abortBroadCast();方法来结束广播。
如何区分有序广播和无序广播
在接收广播后onReceiver方法中调用abortBroadCast方法结束广播,如果抛出异常则为无序广播,反之亦然。