网站大量收购独家精品文档,联系QQ:2885784924

Android深入探究笔记之二十 -- 广播接收者.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档