- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
广播式网络就是某计算机发送的消息,网络内所有计算机都可以收到。 广播(broadcasting)是多点投递的最普遍的形式,它向每一个目的站投递一个分组的拷贝。它可以通过多个单次分组的投递完成,也可以通过单独的连接传递分组的拷贝,直到每个接收方均收到一个拷贝为止。 * * Android广播的优势: 1、扩展了Android中的事件模型,提高了应用程序的可扩展性。 2、方便了不同应用程序共享数据 3、提高了应用程序的运行效率 * Broadcast Receiver(广播接收器)包含两部分功能:一是发送广播消息,另一个是接收广播消息。 系统和应用程序都可以发送广播消息,发送广播实际上就是调用sendBroadCast()方法向系统内部 发送一个Intent对象,这与startActivity()的作用是类似的,所不同的是:发送广播只能启动 Broadcast Receiver对象,而不会启动任何Activity或者Service对象。 所谓的接收广播消息,即Broadcast Receiver,它和Activity、Service在架构上是平等的,都是 为了完成某个任务,所不同的是:Broadcast Receiver只能与sendBroadcast()发送的Intent匹配 。 Broadcast Receiver没有界面,其生命周期非常短,只有在执行onReceive()方法中才有效,一旦 onReceive()方法执行完毕,该Broadcast Receiver的生命周期就会结束。因此,不要在onReceive() 方法内部执行一些具有回调功能的异步函数,因为当异步函数回调时,Broadcast Receiver对象的 生命周期已经结束了。从程序的角度讲,就意味着该Broadcast Receiver对象已经被销毁,回调函数 所引用的Broadcast Receiver对象是一个不存在的对象,于是回调会发生异常。 广播消息分为两类:一类是系统已经定义的消息,比如电池电量低、时区发生变更、打开屏幕等; 另一类是自定义消息,自定义广播可以通过context.sendBroadcast()方法发送。事实上,系统 内部广播也是通过该方法发送的。 接收消息的方式也有两种:一种是静态接收,即当程序安装时,就声明了其内部有广播接收器以及 可以接收的广播消息类型,静态接收多用于处理系统广播消息;另一种是动态接收,在接收前, 通过调用 registerReceiver()方法向系统注册一个Receiver对象,动态接收多用于一个应用程序 的内部,所接收的消息大多是自定义消息。动态接收的好处是可以节省系统开销,因为只有在 需要的时候才打开广播接收器。 每个接收器内部都有一个onReceive()方法,广播消息产生时,系统会通知该广播所有的接收器,对应 的onReceiver()方法会被执行。广播消息有两种方式,并会导致不同的消息处理方式:一种是同步广播 ,另一种是异步广播。 同步广播使用sendOrderedBradCast()发送消息,接收器是同步执行,即每次执行一个Receiver,待 该Receiver返回后再执行下一个。执行的顺序按照Receiver的优先级,可以通过android:priority属性 在xml文件中指定Receiver的优先级。在执行的过程中,任何一个Receiver都可以终止消息处理, 这会 导致后续的Receiver得不到消息。 异步广播使用sendBroadcast()发送消息,此时接收器会同时执行,彼此独立。系统内部的消息广播采用 的就是这种方式。 * C:\android\android-sdk-windows\docs\reference\android\content\Intent.html * 1、Receiver对象接收的消息本质上是Intent,系统内部以及定义了很多广播消息类型, 例如电池电量低、屏幕开启或者关闭、系统引导完成等,系统内部广播这些消息使用的 也是sendBroadcast()。多数应用中,Receiver接收的是系统发出的消息。 2、如第一个问题所述,系统使用sendBroadcast()发送广播,应用程序也可以使用该方法 发送广播。当系统发送这些广播后,同样经过Intent匹配找到相应的Receiver对象并启动。 这与Activity或者Servcie一样。 3、系统内部定义的广播消息,可以查阅官方文档: C:\android\android-sdk-windows\docs\reference\android\content\Intent.html 4、当然可以自定义广播消息。自定义广播无非是给Intent对象的Action字段赋予 自定义的值而已
文档评论(0)