EventBus使用

 

当一个Android应用功能愈来愈多的时候,保证应用的各个部分之间高效的通讯将变得愈来愈困难。如何优雅地解决这个问题?这时候,就可使用到EventBus。android

EventBus是GreenRobot出品的Android系统的一个Event Bus类库,同类的还有Otto(基于注解),都是用来简化应用组件之间的通讯。git

使用以下:github

    1. Implement any number of event handling methods in the subscriber:网络

      public void onEvent(AnyEventType event) {}app

    2. Register subscribers:异步

      eventBus.register(this);post

    3. Post events to the bus:this

      eventBus.post(event);spa

    4. Unregister subscriber:线程

      eventBus.unregister(this);

EventBus提供了几种ThreadMode线程模型来处理事件,这个自己是能够扩展的,你彻底能够按照本身的须要来自定义你所须要的线程模型:

PostThread:事件响应就在事件发布的线程,即时响应。

MainThread::事件响应在android的主线程也即UI线程,即时响应。

BackGroundThread:事件响应在后台线程。当事件发布在工做线程时,事件处理就在这个工做线程;当事件发布在主线程时,就另开一个惟一的工做线程来线性的响应事件。即时响应:

Asyn:事件响应在一个独立的工做线程,与事件发布的线程和主线程不一样。通常用来来处理一些耗时的操做如网络数据等,尽可能避免同时触发大量的异步线程,EventBus内部使用了一个线程池来复用线程。

EventBus支持StickyEvents,实际使用中,某个事件可能屡次使用,可是咱们须要最新的事件信息,好比不停更新的地理位置信息,这个时候你就能够将其发布为StickyEvent,它自己会cache最近的同类型的事件,经过post和get方法cache和获取。postSticky(Object event),getStickyEvent(Class<?> eventType)。

相关文章
相关标签/搜索