发送自定义广播 之 有序广播

本文详细介绍了在Android中如何发送和接收有序广播。通过示例展示了如何在点击按钮时发送有序广播,以及如何创建两个优先级不同的广播接收器,依次接收到广播。此外,还演示了如何通过设置优先级来改变接收顺序,以及如何在广播接收器中截断广播的传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前章节介绍了如何发送和接收标准广播。标准广播发送后,可以被多个广播接收器同时接收到。除了标准广播,还有有序广播。对于有序广播,广播接收器接收广播是有先后顺序的,而且前面的广播接收器还可以将广播截断,阻止其继续传播。本章节介绍有序广播如何发送和接收。
本章节实现,在程序界面上,通过点击一个按钮发送出一条有序广播,然后程序中定义的2个广播接收器,有序的接收到该广播。同时,实现前面的广播接收器,截断该广播的传递,使后面的广播接收器无法接收到。

l 1、新建一个Android Application Project项目,在布局文件activity_main.xml中创建一个按钮,作为发送广播的触发点,代码如下:
这里写图片描述
图1

l 2、在MainActivity.java中,撰写按钮的点击事件代码,在点击事件中增加发送自定义广播的逻辑。代码如下:
这里写图片描述
图2
说明:
• 第21行代码,构建一个Intent对象,并把要发送的广播的值“ com.example.mybroadcast.MY_ORDER_BROADCAST ”传入。
• 第22行代码,后调用Context的sendOrderedBroadcast()方法将广播发送出去,此处和发送标准广播用的sendBroadc()方法不同。

l 3、新建两个类MyBroadcastReceiverA和MyBroadcastReceiverB,均继承自 BroadcastReceiver,用来接收广播。代码如下:
这里写图片描述
图3

这里写图片描述
图4

l 4、在文件 AndroidManifest.xml中对步骤3创建的广播接收器进行注册,代码片段如下:
这里写图片描述
图5
说明:
• 我们给接收器MyBroadcReceiverA,通过属性android:priority设置了优先级100,以使它能在MyBroadcaReceiverB之前接收到广播。

l 5、运行程序,点击按钮后,程序先弹出接收到广播的提示信息”The Frist!”,然后弹出提示信息”The Second!”,接收器MyBroadcastReceiverA先于接收器MyBroadcastReceiverB接收到广播,成功!

l 6、在文件 AndroidManifest.xml中,为广播接收器MyBroadcastReceiverB设置优先级200。然后再次运行程序,点击按钮后,程序先弹出接收到广播的提示信息”The Second!”,然后弹出提示信息”The Frist!”,接收器MyBroadcastReceiverB先于接收器MyBroadcastReceiverB接收到广播,成功!

l 7、修改类MyBroadcastReceiverB的代码,增加第14行代码,用于截断广播的传递。代码如下:
这里写图片描述
图6

l 8、运行程序,点击按钮后,程序只弹出接收到广播的提示信息”The Second!”,接收器MyBroadcastReceiverB截断广播成功!


上面内容有疑问的地方,可以加下面 yun 的微信,和 yun 直接沟通
这里写图片描述

也可以加 yun 的QQ:307 434 1506

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值