EventBus简介及初步使用
EventBus简介
EventBus是一个Android和Java的发布/订阅事件总线模型,其模型图如下所示:
EventBus的优点有: 1. 简化组件之间的通信 2. 简化代码 3. 快速,小巧(~50K jar) 4. 具有线程分发、订阅优先级等高级特性
从模型图中可以看到几个概念: 1. Publisher:发布者,发布事件,事件的产生者 2. Event:事件,封装了要传递的内容 3. Subscriber:订阅者,对事件感兴趣的消费者 4. EventBus:事件总线,管家,将事件分发给正确的Subscriber进行处理
初步使用
在Android中考虑一个场景,Activity A需要显示一个从网站上下载的内容,该下载任务在Activity B中进行,完成后,将内容通知给Activity A进行显示。
不使用EventBus的情况
不使用EventBus的情况下,Activity A使用startActivityForResult请求Activity B,Activity中开启线程进行网络任务,完成后将结果通过setResult返回。 Actiivty A的代码如下:
Activity B的代码如下:
使用EventBus的情况
EventBus的基本使用包含三个步骤: 1. 定义事件 例子中下载内容就是一个String类型的字符串,可以简单定义:
准备订阅者 由于上面例子中Activity A是要显示Activity B下载的内容,因此Activity A是事件的消费者,在其中声明一个方法如下:
另外,还需要将Subscriber注册到EventBus中,这个需要在Activity的生命周期方法中进行注册,如下:
发布者发布事件 Activity B完成下载后,需要将内容打包成Event,然后发送出去,
总结
经过两种方式的对比,可以看到接入EventBus是一件很简单的事情,并且EventBus可以带来很好的解耦性。
Last updated