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