您的位置:首页 > 其它

全局大喇叭,详解广播机制

2016-04-22 10:09 141 查看

广播机制简介

Android中的广播主要分为两种类型:标准广播和有序广播

标准广播(Normal broadcasts)是一种完全异步执行的广播,在广播发出之后所有的广播接收器几乎在同一时间接收到这条广播,因此它们之间没有任何先后顺序可言。这种广播的效率比较高,但同时意味着无法被截断。



有序广播则是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够接受到这条广播消息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。所以此时的广播接收器是有先后顺序的,优先级高的广播接收器就可以先收到广播消息,并且前面的广播接收器还可以截断正在传递的广播,这样后面的广播接收器就无法收到广播消息了



接收系统广播

动态注册监听网络变化

注册广播有两种方式

动态注册:在代码中注册

静态注册:在AndroidManifest.xml文件中注册

创建广播接收器

新建一个类,让它继承自BroadcastReceiver

重写父类的onReceive()方法

动态注册的广播接收器一定都要取消注册才行

静态注册实现开机启动

receiver标签:所有静态注册的广播接收器都是在这里进行注册的

发送自定义广播

发送标准广播

首先构建出构建出一个Intent对象,并把要发送的广播的值传入

然后调用Context的sendBroadcast()方法将广播发送出去

发送有序广播

只需调用Context的sendOrderedBroadcast()方法

使用本地广播

本地广播:只能够在应用程序的内部进行传递,并且广播接收器也只能接收来自本应用程序发出的广播

主要是使用一个LocalBroadcastManager来对广播进行管理,并提供了发送广播和注册广播接收器的方法

首先是通过LocalBroadcastManager的getInstance()方法得到它的一个实例

然后在注册广播接收器的时候是调用LocalBroadcastManager的registerReceiver()方法

使用本地广播的优势

可以明确地知道正在发送的广播不会离开我们的程序,因此不需要担心机密数据泄漏的问题

其他的程序无法将广播发送到我们程序的内部,因此不需要担心会有安全漏洞的隐患

发送本地广播比起发送系统全局广播将会更加高效
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: