全局大喇叭,详解广播机制
2016-04-22 10:09
141 查看
广播机制简介
Android中的广播主要分为两种类型:标准广播和有序广播标准广播(Normal broadcasts)是一种完全异步执行的广播,在广播发出之后所有的广播接收器几乎在同一时间接收到这条广播,因此它们之间没有任何先后顺序可言。这种广播的效率比较高,但同时意味着无法被截断。
有序广播则是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够接受到这条广播消息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。所以此时的广播接收器是有先后顺序的,优先级高的广播接收器就可以先收到广播消息,并且前面的广播接收器还可以截断正在传递的广播,这样后面的广播接收器就无法收到广播消息了
接收系统广播
动态注册监听网络变化
注册广播有两种方式动态注册:在代码中注册
静态注册:在AndroidManifest.xml文件中注册
创建广播接收器
新建一个类,让它继承自BroadcastReceiver
重写父类的onReceive()方法
动态注册的广播接收器一定都要取消注册才行
静态注册实现开机启动
receiver标签:所有静态注册的广播接收器都是在这里进行注册的发送自定义广播
发送标准广播
首先构建出构建出一个Intent对象,并把要发送的广播的值传入然后调用Context的sendBroadcast()方法将广播发送出去
发送有序广播
只需调用Context的sendOrderedBroadcast()方法使用本地广播
本地广播:只能够在应用程序的内部进行传递,并且广播接收器也只能接收来自本应用程序发出的广播主要是使用一个LocalBroadcastManager来对广播进行管理,并提供了发送广播和注册广播接收器的方法
首先是通过LocalBroadcastManager的getInstance()方法得到它的一个实例
然后在注册广播接收器的时候是调用LocalBroadcastManager的registerReceiver()方法
使用本地广播的优势
可以明确地知道正在发送的广播不会离开我们的程序,因此不需要担心机密数据泄漏的问题
其他的程序无法将广播发送到我们程序的内部,因此不需要担心会有安全漏洞的隐患
发送本地广播比起发送系统全局广播将会更加高效
相关文章推荐
- 计算1加到100的和
- 拯救无法启动的虚拟机文件.vmdk中的数据
- 正则表达式的两数字之间的数
- GeoHash核心原理解析 附近的人算法
- 视频质量评价
- 用户统计
- 关于Oracle函数wm_concat的一些问题
- (原创)命令行查看md5key、sha1值、keystroe别名等信息
- Android Volley完全解析
- 新浪微博长链接字数统计问题
- androidstudio 忽略文件
- csdn记录
- 【Myeclipse问题处理】
- IOS开发中,SVN如何恢复到某一个版本(以Cornerstone为例)
- 第一节课笔记
- Linux 清空登录信息
- iOS版本更新的App提交审核发布流程---这篇博客有点老,不过也可以借鉴。
- 经典算法——堆排序笔试题
- mybatis批量插入oracle解决方法
- HEVC的Availability计算过程