EventBus介绍:
EventBus出自greenrobot,和之前大名鼎鼎的GreenDao出自同一家。之前一直使用的是2.4版本,今天我们将学习分析最新的Event 3.0,EventBus 3.0 最新的特性就是加入了注解,通过注解的方式 告知订阅函数运行在哪个线程中。
github地址:https://github.com/greenrobot/EventBus
官方文档:http://greenrobot.org/eventbus/documentation
EventBus主要角色:
- Event 传递的事件对象
- Subscriber 事件的订阅者
- Publisher 事件的发布者
- ThreadMode 定义函数在何种线程中执行
官网给出的各种角色的协作图
- EventBus底层采用的是注解和反射的方式来获取订阅方法信息(首先是注解获取,若注解获取不到,再用反射)
- 当前订阅者是添加到Eventbus 总的事件订阅者的subscriptionByEventType集合中
- 订阅者所有订阅的事件类型添加到typeBySubscriber 中,方便解注册时,移除事件
EventBus功能: 通过解耦发布者和订阅者简化Android事件传递,EventBus可以代替Android传统的Intent,Handler,Broadcast或接口函数,在Fragment,Activity,Service线程之间传递数据,执行方法。
EventBus特点: 代码简洁,是一种发布订阅设计模式(观察者设计模式)。
EventBus示例:
- 关联EventBus框架
compile 'org.greenrobot:eventbus:3.0.0'