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

广播机制简介

  • Android中的广播主要分为两种类型:标准广播和有序广播
  • 标准广播(Normal broadcasts)是一种完全异步执行的广播,在广播发出之后所有的广播接收器几乎在同一时间接收到这条广播,因此它们之间没有任何先后顺序可言。这种广播的效率比较高,但同时意味着无法被截断。
    这里写图片描述
  • 有序广播则是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够接受到这条广播消息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。所以此时的广播接收器是有先后顺序的,优先级高的广播接收器就可以先收到广播消息,并且前面的广播接收器还可以截断正在传递的广播,这样后面的广播接收器就无法收到广播消息了
    这里写图片描述

接收系统广播

动态注册监听网络变化

  • 注册广播有两种方式
    • 动态注册:在代码中注册
    • 静态注册:在AndroidManifest.xml文件中注册
  • 创建广播接收器
    • 新建一个类,让它继承自BroadcastReceiver
    • 重写父类的onReceive()方法
  • 动态注册的广播接收器一定都要取消注册才行

静态注册实现开机启动

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

发送自定义广播

发送标准广播

  • 首先构建出构建出一个Intent对象,并把要发送的广播的值传入
  • 然后调用Context的sendBroadcast()方法将广播发送出去

发送有序广播

  • 只需调用Context的sendOrderedBroadcast()方法

使用本地广播

  • 本地广播:只能够在应用程序的内部进行传递,并且广播接收器也只能接收来自本应用程序发出的广播
  • 主要是使用一个LocalBroadcastManager来对广播进行管理,并提供了发送广播和注册广播接收器的方法
  • 首先是通过LocalBroadcastManager的getInstance()方法得到它的一个实例
  • 然后在注册广播接收器的时候是调用LocalBroadcastManager的registerReceiver()方法
  • 使用本地广播的优势
    • 可以明确地知道正在发送的广播不会离开我们的程序,因此不需要担心机密数据泄漏的问题
    • 其他的程序无法将广播发送到我们程序的内部,因此不需要担心会有安全漏洞的隐患
    • 发送本地广播比起发送系统全局广播将会更加高效
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值