APP开发实战74-广播发送及广播类型

本文详细介绍了Android中的四种广播类型:普通广播、系统广播、有序广播和粘性广播。普通广播效率高但无法传递处理结果;系统广播由系统在特定事件时自动发送;有序广播按照优先级顺序接收并能传递结果;粘性广播在API 21后被废弃。
摘要由CSDN通过智能技术生成

(转自; http://www.cnblogs.com/lwbqqyumidi/p/4168017.html)

18.3广播发送及广播类型

经常说”发送广播“和”接收“,表面上看广播作为Android广播机制中的实体,实际上这一实体本身是并不是以所谓的”广播“对象存在的,而是以”意图“(Intent)去表示。

定义广播的定义过程,实际就是相应广播”意图“的定义过程,然后通过广播发送者将此”意图“发送出去。被相应的BroadcastReceiver接收后将会回调onReceive()函数。

18.3.1Normal Broadcast:普通广播

普通广播是完全异步的,通过Context的sendBroadcast函数来发送,消息传递的效率比较高,但所有的receviers的执行顺序不确定。

缺点:接收者不能将处理结果传递给下一个接受者,并且无法终止广播Intent的传播,直到没有预支匹配的广播接收器为止。

18.3.2System Broadcast: 系统广播

Android系统中内置了多个系统广播,只要涉及到手机的基本操作,基本上都会发出相应的系统广播。如:开机启动,网络状态改变,拍照,屏幕关闭与开启,电量不足等。每个系统广播都具有特定的intent-filter,其中主要包括具体的action,系统广播发出后,将被相应的BroadcastReceiver接收。系统广播在系统内部当特定事件发生时,有系统自动发出。

18.3.3Ordered broadcast:有序广播

有序广播的有序广播中的“有序”是针对广播接收者而言的,指的是发送出去的广播被BroadcastReceiver按照先后循序接收。有序广播的定义过程与普通广播无异,只是其的主要发送方式变为:sendOrderedBroadcast(intent,receiverPermission, ...)。

对于有序广播,其主要特点总结如下:

A多个当前已经注册且有效的BroadcastReceiver接收有序广播时,是按照先后顺序接收的,先后顺序判定标准遵循为:将当前系统中所有有效的动态注册和静态注册的BroadcastReceiver按照priority属性值从大到小排序,对于具有相同的priority的动态广播和静态广播,动态广播会排在前面。

B当广播接收器收到广播后,可以使用setResult()函数把结果传给下一个接收器,通过getResult()函数取得上个广播接收器返回的结果,并可用abortBroadcast()函数让系统丢弃该广播,使改广播不再被别的接收器接收到。

18.3.4Sticky Broadcast:粘性广播

(在 android 5.0/api 21中deprecated,不再推荐使用,相应的还有粘性有序广播,同样已经deprecated)。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值