Android---广播

本文介绍了Android广播机制,除开机自启建议用动态广播,8.0后静态广播有限制。详细讲解了标准广播的动态注册,以监听网络变化为例说明。还提及有序广播的区别、设置优先级和截断广播,以及本地广播机制,可避免安全问题,且只能动态注册。

除了开机自启的建议都用动态广播,开机自启的用静态广播。Android8以后对静态广播做一些限制。
标准广播:
动态注册:(这里以动态注册监听网络变化为例)
新建一个BroadcastTest项目,修改MainActivity的代码:
在这里插入图片描述
解释一下:
我们在MainAvtivity中定义了一个内部类NetworkChangeReceiver,这个类继承自BroadcastReceiver,重写父类的onReceiver()方法。当网络状态发生变化时,onReceiver()方法就会被执行。
在oonCreate方法中:
1.创建一个IntentFilter实例,添加一个android.net.conn.CONNECTIVITY的action(当网络状态发生变化时,系统发出广播的值为android.net.conn.CONNECTIVITY,也就是说我们的广播接收器想监听什么样的广播,这里就添加相应的action)。
2.创建NetworkReceiver的实例,将NetworkReceiver的实例和IntentFilter的实例传入,并调用registerReceiver()方法进行注册,这样NetworkChangeReceiver就能接收到所有值为android.net.conn.CONNECTIVITY的广播了,也就实现了监听网络变化的功能。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有序广播:(区别)
发广播:
在这里插入图片描述
设置接收广播的优先级:
在这里插入图片描述
截断广播:(广播传递到这里不再继续传递下去,终止传递。)
在这里插入图片描述

本地广播:
标准广播,其他应用程序只要知道我们的action,就可以接收到我们的广播和数据。容易引起安全性问题,避免接收辣鸡广播和避免关键信息被截获。
Android引入了一套本地广播机制,
本地广播只能动态注册不能静态注册,用了一个本地广播管理器来进行广播的。
在这里插入图片描述
在这里插入图片描述

注:
广播中启动活动一定要加这一句:

 intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

广播中弹出AlertDialog:
在这里插入图片描述
由于我们在ForceOfflineReceiver 里弹出了一个系统级别的对话框,因此必须要声明android.permission.SYSTEM_ALERT_WINDOW 权限。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叮叮当当0543

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值