EventBus和Otto理解及效率性能对比

发表于

EventBus和Otto都是为了方便的进行线程间的低耦合的通信和事件、数据传递。

实现软件开发的高内聚,低耦合。

当一个Android应用功能越来越多的时候,通过EventBus和Otto保证应用的各个部分之间高效的通信。

在应用中的多个地方,控件经常需要根据某个状态来更新他们显示的内容。这种场景常见的解决方式就是定义一个接口,需要关注该事件的控件来实现这个接口。然后事件触发的地方来注册/取消注册这些对该事件感兴趣的控件。

所以Event Bus模式和Otto模式可以让两个组件相互通信,但是他们之间并不相互知晓。让开发和测试变得高效。

 

Otto简介

Otto 是Android系统的一个Event Bus模式类库。用来简化应用组件间的通信。
使用方法:

1.下载导入library类库jar包

2.主要使用com.squareup.otto.Bus类、@Produce、 @Subscribe 注解。
3.在组件的相关生命周期中通过Bus类的register 函数来注册,然后Bus类会扫描改类中带有@Produce和 @Subscribe 注解的函数。

4.@Subscribe 注解告诉Bus该函数订阅了一个事件,该事件的类型为该函数的参数类型;而@Produce注解告诉Bus该函数是一个事件产生者,产生的事件类型为该函数的返回值。

5.可以在Activity或者Fragment的onResume函数中注册监听器;在onPause函数中取消注册。

EventBus 简介

EventBus使用起来和Otto差不多,分订阅、注册、发布、取消注册等步骤:
在订阅者类中实现各种事件的订阅函数
public void onEvent(AnyEventType event) {}
把该订阅类注册到Bus中
eventBus.register(this);
向Bus发布事件
eventBus.post(event);
不需要的时候 取消订阅事件
eventBus.unregister(this);

Otto和EventBus的比较

eventbusotto

 

性能比较

otto2

原理

例如,有两个类A和B,注意A中将派发事件,交由EventBus托管,EventBus将执行B中的Handler,执行相应的操作,整个过程非常优雅的实现了松耦合,A和B彼此都不知道对方的存在,甚至也不需要知道EventBus的存在。

 


文章评论
共收到 0 条评论