Android 应用内通信-LocalBroadcast
版权声明:
本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有。
未经允许,不得转载。
一、前言
最开始的时候,Android 下的 Broadcast 都是全局的,发出去的广播,只要有匹配的接收者,就可以收到广播。
而在 Support v4 : 21 之后,提供了一种新的 Broadcast 的形式,就是 LocalBroadcast,它主要用于在同一个应用中,不同组件之间,发送和接收 Broadcast。
二、LocalBroadcast 因何存在
BroadcastReceiver 在设计之初,就是想从全局的角度去设计一个方便不同应用程序之间进行通信的组件。而这样的一个开放的设计,对单个应用程序而言,BroadcastReceiver 是存在各种安全问题的。
而 LocalBroadcast 就是因为这个而存在的,顾名思义,它就是为了在同一个应用程序内,进行通信的组件。它通过 LocalBroadcastManager (以下简称 LBM),来实现注册、解注、发送广播等操作。
它和原有的 BroadcastReceiver 相比而言,有什么好处:
- 因 LocalBroadcast 只在本应用内,所以完全无需担心隐私数据被泄露的问题。
- LocalBroadcast 的发送和接收更可控。
- 比原有的 BroadcastReceiver 更高效(后面会讲到)。
三、如何使用 LocalBroadcast
LocalBroadcast 通过 LocalBroadcastManager 来管理,在 LBM 中,提供了普通广播使用的对应的 API,通过 LBM 中提供的 API,就可以完成对本地广播的操作,使用方式和普通广播无异。
LBM 是一个单例对象,可以通过 LocalBroadcastManager.getInstance(Context)
方法获取到。
LBM 的使用,其实没什么好说的,直接上例子。
首先,定义一个 BroadcastReceiver ,然后在一个 Activity 的生命周期内,分别注册和解注它,然后监听一个按钮的点击,用于发送 LocalBroadcast。
公众号二维码.jpg