- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android深入探究笔记之二十 -- 广播接收者
Android深入探究笔记之二十 -- 广播接收者,BroadcastReceiver? HYPERLINK javascript:d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(saveit=window.open(/storeit.aspx?t=+escape(d.title)+u=+escape(d.location.href)+c=+escape(t),saveit,scrollbars=no,width=590,height=300,left=75,top=20,status=no,resizable=yes));saveit.focus(); \o 收藏到我的网摘中,并分享给我的朋友 收藏
1. 概述
?????? 广播被分为两种不同的类型:“普通广播(Normal broadcasts)”和“有序广播(Ordered broadcasts)”。
?????? 普通广播是完全异步的,可以在同一时刻(逻辑上)被所有接收者接收到,消息传递的效率比较高,
???? 但缺点是:接收者不能将处理结果传递给下一个接收者,并且无法终止广播Intent的传播。
????
?????? 然而有序广播是按照接收者声明的优先级别,被接收者依次接收广播。如:A的级别高于B,B的级别高于C,那么,广播先传给A,再传给B,最后传给C 。
?????????? 优先级别声明在 intent-filter 元素的 android:priority 属性中,数越大优先级别越高,取值范围:-1000到1000,优先级别也可以调用IntentFilter对象的setPriority()进行设置 。
?????? 有序广播的接收者可以终止广播Intent的传播,广播Intent的传播一旦终止,后面的接收者就无法接收到广播。
?????? 另外,有序广播的接收者可以将数据传递给下一个接收者,如:A得到广播后,可以往它的结果对象中存入数据,当广播传给B时,B可以从A的结果对象中得到A存入的数据。
??????
?????? Context.sendBroadcast()
???? 发送的是普通广播,所有订阅者都有机会获得并进行处理。
?????? Context.sendOrderedBroadcast()
???? 发送的是有序广播,系统会根据接收者声明的优先级别按顺序逐个执行接收者,
???? 前面的接收者有权终止广播(BroadcastReceiver.abortBroadcast()),如果广播被前面的接收者终止,
???? 后面的接收者就再也无法获取到广播。
???? 对于有序广播,前面的接收者可以将数据通过setResultExtras(Bundle)方法存放进结果对象,
???? 然后传给下一个接收者,下一个接收者通过代码:Bundle bundle = getResultExtras(true))可以获取上一个接收者存入在结果对象中的数据。
2.
?????? 广播接收者(BroadcastReceiver)用于接收广播 Intent,广播 Intent 的发送是通过调用 Context.sendBroadcast()、Context.sendOrderedBroadcast() 来实现的。
??????
?????? 通常一个广播 Intent 可以被订阅了此 Intent 的多个广播接收者所接收,这个特性跟 JMS 中的 Topic 消息接收者类似。
?????? 要实现一个广播接收者方法如下:
????????????? 第一步:继承BroadcastReceiver,并重写onReceive()方法。
????????????? public class IncomingSMSReceiver extends BroadcastReceiver {
???????????????????? @Override public void onReceive(Context context, Intent intent) {
???????????????????? }
????????????? }
????????????? 第二步:订阅感兴趣的广播Intent,订阅方法有两种:
???????????????????? 第一种:使用代码进行订阅
??????????????????????????? !-- vider.Telephony.SMS_RECEIVED 是短信广播--
??????????????????????????? I
您可能关注的文档
最近下载
- 习思想以中国式现代化全面推进中华民族伟大复兴.pptx VIP
- Mybody人教版三年级英语课件.ppt VIP
- 张伯香英美文学选读Selected Reading of English and American Literature.doc
- 水准尺测量用市场发展前景分析及供需格局研究预测报告.docx
- GB/T 42163.1-2022单体浇铸聚酰胺滑轮 第1部分:电梯滑轮.pdf
- 2023年广州市黄埔区教育局招考聘用铁英小学事业编制教师10人模拟预测(共500题)笔试参考题库附答案详解.docx
- 病理科危急值培训.pptx VIP
- 能源及能源矿产概论.ppt
- 股骨头坏死ppt ppt课件.pptx VIP
- 2024宜春职业技术学院教师招聘考试题库及答案.docx
文档评论(0)