Skip to content

Latest commit

 

History

History
35 lines (28 loc) · 1.61 KB

event_bus.md

File metadata and controls

35 lines (28 loc) · 1.61 KB

事件总线框架,类似于google guava、square otto的event bus。它是一种消息发布-订阅模式,它的工作机制类似于观察者模式,通过通知者去注册观察者,最后由通知者向观察者发布消息。

Event Bus解耦了asyncTask、handler、thread、broadcast等组件。使用Event bus可以轻松地跨多个Fragment进行通讯。

它用法很简单,在Activity或者Fragment中使用,其中event是一个简单的POJO

// 退出系统的事件
eventBus.post(new LogoutEvent());

回调事件,同样在Activity或者Fragment中定义好。回调方法名可以随便定义,参数须要和event一一对应。并且在方法名前加上注解Subscribe

         /**
          * 退出整个app
          * @param event
          */
          @Subscribe
          public void onLogoutEvent(LogoutEvent event) {
          }

@Subscribe可以使用枚举

         /**
          * 使用ThreadMode.BackgroundThread枚举,表示在后台线程运行,不在主线程中运行。
          * @param event
          */
          @Subscribe(ThreadMode.BackgroundThread)
          public void onBackendFresh(BackendFreshEvent event) {
          }

使用枚举BackgroundThread时,如果在回调方法中需要更新ui,则必须要配合handler使用。 在不使用枚举的情况下,@Subscribe会默认使用PostThread,表示回调方法会在主线程中运行。 如果在一个Activity中存在多个Fragment,并且在Activity或者在Fragment中存在订阅同一event的回调方法。如果发出event的请求时,这些回调方法都会起作用。