(1/12)Android的构成基石——四大组件_Broadcast
- Broadcast 是一种广泛运用的、在应用程序之间传递信息的机制。
- Android中广播与传统意义上的电台广播类似,一个广播可以有任意个接收者。
- 广播机制是一个典型的发布——订阅模式,也就是我们所说的观察者模式。
- 广播机制最大的特点就是发送方式并不关心接收方是否收到数据,也不关心接收方是如何处理数据的。
Android中广播机制包含3个基本要素:
- 用于发送广播的Broadcast
- 接收广播的BroadcastReceiver
- 用于传递信息的Intent
Android中的广播:
- 普通广播
- 有序广播
- 本地广播
- Sticky广播
1.普通广播完全异步,通过Context的 sendBroadcast()来发送,传递效率高,但receivers的执行顺序不确定。首先我们需要定义一个广播接收器,示例:
第二步是注册广播,可通过AndroidManifest.xml(静态注册)或者代码进行注册(动态注册):xml注册示例代码:
动态注册示例代码:
private void registerHelloBroadcast(){registerReceiver(new HelloBroadcastReceiver(),
然后就会调用HelloBroadcastReceiver 的 onReceiver 函数,在该函数中执行相关操作即可。new IntentFilter(HELLO_ACTION))
}
2.有序广播
通过 Context.sendOrderedBroadcast()来发送。所有的广播接收器按照优先级依次执行。广播接收器的优先级通过 receiver 的 intent-filter 中的android:priority 属性设置,值越大越优先。
当广播接收到后,可使用 setResult()来将结果传给下一个广播接收器。
然后,通过getResult()函数来取得上个广播接收器返回的结果。
并可以用abortBroadcast()函数来让系统丢弃该广播,使它不再传到其它接收器。
设置优先级:
![]()
![]()
发送有序广播:
private void sentOrderBroadcast(){
sentOrderBroadcast(new Intent(HELLO_ACTION),
null)
}
3.本地广播
API21 的 v4包中增加了 LocalBroadcastManager
- 解决全局广播将自己应用信息广播给所有应用程序的缺陷
- 可在进程内广播限于应用内的广播
- 避免了安全隐患