发送自定义广播 之 有序广播
2016-04-11 16:17
477 查看
之前章节介绍了如何发送和接收标准广播。标准广播发送后,可以被多个广播接收器同时接收到。除了标准广播,还有有序广播。对于有序广播,广播接收器接收广播是有先后顺序的,而且前面的广播接收器还可以将广播截断,阻止其继续传播。本章节介绍有序广播如何发送和接收。
本章节实现,在程序界面上,通过点击一个按钮发送出一条有序广播,然后程序中定义的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
本章节实现,在程序界面上,通过点击一个按钮发送出一条有序广播,然后程序中定义的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
相关文章推荐
- linux下 find 和 grep命令结合使用查找定位字符串
- 不定义JQuery插件,不要说会JQuery
- 启动另外的一个应用程序的Activity(三种方式)
- iOS开发调试Reveal使用
- linux配置时间同步
- mybatis 个人笔记
- AFNetworking源码之AFSecurityPolicy模块
- android PorterDuffXfermode
- Boost状态机--中级篇
- 【1-0】mysql安装
- eclipse 远程调试tomat
- 行存储vs列存储
- [1] Word样式/主题/模板
- 数据库设计三大范式
- Android 调用另一个应用(app)中的Activity
- 使用cookie模拟网站显示客户机上次访问的商品
- npm安装package.json
- android之官方下拉刷新组件SwipeRefreshLayout
- iptables练习题(四)
- 配置JDK环境变量