Android初学之十二:Broadcast

本文详细介绍了Android中广播接收器的使用,包括动态和静态注册、标准广播、有序广播以及本地广播的实现步骤。动态注册示例展示了监听网络变化的程序优化,静态注册则强调了其在程序未启动时仍能接收广播的特点。有序广播允许控制接收顺序,通过设置优先级,可以截断广播的传递。本地广播则提供了一种安全高效的内部通信方式,防止广播跨应用传播导致的安全问题。
摘要由CSDN通过智能技术生成

一、注册广播的方式

动态注册:在代码中;静态注册:在清单文件中
如何创建一个广播接收器呢?
答:新建一个类,让它继承BroadcastReceiver,并重写父类的onReceiver()方法就行了,这样当有广播到来时,onReceicer()方法就会得到执行,具体的逻辑就可以在这个方法中处理。

举例:动态注册编写一个监听网络变化的程序
在这里插入图片描述
提醒网络变化还不够人行话,希望能准确告知用户当前是有网还是无网,我们进行对上面的代码进行优化
在这里插入图片描述
在这里插入图片描述

二、静态注册广播

这里借用JingXingLiang博主文章,感谢!

三、发送标准广播

是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播消息,因此他们之间没有先后顺序。这种广播的效率会比较高,但同时也意味着它是无法被截断的。

1、新建一个MyBroadcastReceiver用来接收广播
在这里插入图片描述

2、静态注册广播,看打钩
在这里插入图片描述
3、新建一个活动用来发送一个值为android.intent.action.BOOT_COMPLETED的广播
(1)、编辑一个按钮
在这里插入图片描述
(2)、编辑活动文件
在这里插入图片描述

四、发送有序广播

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

1、新建另一个项目BroadcastTest2,将项目创建好之后定一个广播接收器,用于上一小节中的自定义广播,新建AndroidBroadcastReceiver
在这里插入图片描述
2、在清单文件里对这个广播器进行修改,监听com.example.broadcasttest.MY_BROADCAST这条广播
在这里插入图片描述
3、回到BroadcastTest项目,修改代码
在这里插入图片描述
做好这一步就可让BroadcastTest2程序接收到广播,那么想要让广播有一个先后顺序接收的话,在清单文件里设置android:priority属性给广播接收器设置一个优先级
在这里插入图片描述
那么如皋想在BroadcastTest程序里将广播截断,在广播接收器里添加一句abortBroadcast();
在这里插入图片描述

五、使用本地广播

前面发送和接收的广播全部属于系统全局广播,即发出的广播可以被其它任何应用程序接收到,并且也可以接收来袭于其它任何应用程序的广播,这样就很容易引起安全性问题,比如我们发送的一些广播携带关键性的数据有可能会被其它的应用程序截获,或者其他程序不断的向我们广播接收器里发生各种垃圾广播。
为了简单第解决广播传播的问题,android引入了一套本地广播机制,使用这个广播机制发出的广播只能够在应用程序的内部进行传递,并且广播接收器也只能接收来自本应用程序的广播。
本地广播的用法并不复杂,主要就是使用了LocalBroadcastManager来对广播进行管理,并提供了发送和注册广播接收器的办法。
在这里插入图片描述

本地广播是无法通过静态注册的方式来接收,因为静态注册主要是为了让程序在未启动的情况下也能接收到广播,而发送本地广播时,我们的程序是肯定启动了,因为也完全不需要使用静态注册的功能。

1、可以明确的知道正在发送的广播不会离开我们的程序,因此不必担心机密数据泄露。
2、其它的程序无法将广播发送到我们程序的内部,因此不需要担心会有安全漏洞的隐患。
3、发送本地广播比发送系统全剧广播将会更叫高效。

根据郭霖大神的《第一行代码》学习,敬礼!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值