Android进阶#(1/12)Android的构成基石——四大组件_Broadcast

(1/12)Android的构成基石——四大组件_Broadcast


  1. Broadcast 是一种广泛运用的、在应用程序之间传递信息的机制。
  2. Android中广播与传统意义上的电台广播类似,一个广播可以有任意个接收者。
  3. 广播机制是一个典型的发布——订阅模式,也就是我们所说的观察者模式。
  4. 广播机制最大的特点就是发送方式并不关心接收方是否收到数据,也不关心接收方是如何处理数据的。

Android中广播机制包含3个基本要素:
  • 用于发送广播的Broadcast
  • 接收广播的BroadcastReceiver
  • 用于传递信息的Intent

Android中的广播:
  • 普通广播
  • 有序广播
  • 本地广播
  • Sticky广播
1.普通广播
完全异步,通过Context的 sendBroadcast()来发送,传递效率高,但receivers的执行顺序不确定。
首先我们需要定义一个广播接收器,示例:

第二步是注册广播,可通过AndroidManifest.xml(静态注册)或者代码进行注册(动态注册):
xml注册示例代码:

动态注册示例代码:

    
    
private void registerHelloBroadcast(){
	registerReceiver(new HelloBroadcastReceiver(),
 			new IntentFilter(HELLO_ACTION))
}


然后就会调用HelloBroadcastReceiver 的 onReceiver 函数,在该函数中执行相关操作即可。


2.有序广播


通过 Context.sendOrderedBroadcast()来发送。所有的广播接收器按照优先级依次执行。广播接收器的优先级通过 receiver 的 intent-filter 中的android:priority 属性设置,值越大越优先。
当广播接收到后,可使用 setResult()来将结果传给下一个广播接收器。
然后,通过getResult()函数来取得上个广播接收器返回的结果。
并可以用abortBroadcast()函数来让系统丢弃该广播,使它不再传到其它接收器。
设置优先级:

发送有序广播:
private void sentOrderBroadcast(){
sentOrderBroadcast(new Intent(HELLO_ACTION),
null)
}

3.本地广播

API21 的 v4包中增加了 LocalBroadcastManager
  • 解决全局广播将自己应用信息广播给所有应用程序的缺陷
  • 可在进程内广播限于应用内的广播
  • 避免了安全隐患


     
     
       
       
         
         
           
           
             
             
               
               


             
             


             
             


             
             


             
             


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值