EventBus作为组件之间通信

1.为何要使用EventBus?

一般我们在不同activty等组件之间通信的时候,都用到了如下的模式:

就是定义一个接口,需要关注该事件的地方来实现这个接口。然后事件触发的地方来注册/取消注册这些对该事件感兴趣的控件,比如如下文章描述的情况:

使用Event Bus模式解耦Android App组件间通信

这样做的问题也是显而易见的,就是不同组件之间往往耦合的比较厉害,越来越多的接口也维护很麻烦,这样就需要用到EventBus模式来解决组件之低耦合的间通信

2.EventBus类库介绍

EventBus是发布/总线模式经过优化的Android系统类库


  • 简化了组件之间的通信
    • 解耦了Event的senders 和 receivers
    • 在Activities, Fragments, 和background threads中都能良好工作
    • 避免了复杂和容易出错的依赖和生命周期的问题
  • 使你的代码更简洁
  • 运行更快速
  • 类库更小 (<50k jar)
  • 已经在超过 100,000,000+ 已经安装的Apps中使用
  • 有一些比如 delivery threads, subscriber priorities,等先进特性

  • EventBus 使用三步走

    1. 定义events:
      public class MessageEvent { /* Additional fields if needed */ }

    2. 准备 subscribers:
      eventBus.register(this);
      public void onEvent(AnyEventType event) {/* Do something */};

    3. Post events:
      eventBus.post(event);
    以下是网上一个EventBus使用实例:
  • http://blog.csdn.net/jdsjlzx/article/details/40856535


你可能感兴趣的:(EventBus作为组件之间通信)