zoukankan      html  css  js  c++  java
  • EventBus使用

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

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

    使用如下:

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

        public void onEvent(AnyEventType event) {}

      2. Register subscribers:

        eventBus.register(this);

      3. Post events to the bus:

        eventBus.post(event);

      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)。

  • 相关阅读:
    弹窗拖拽组件开发应用
    高级事件的运用
    常见排序算法(JS版)
    原生js实现仿window10系统日历效果
    原生js实现吸顶导航和回到顶部特效
    OVN实战---《The OVN Gateway Router》翻译
    OVN实战---《An Introduction to OVN Routing》翻译
    OVN实战---《A Primer on OVN》翻译
    深入理解CNI
    《CNI specification》翻译
  • 原文地址:https://www.cnblogs.com/seventhen/p/3180879.html
Copyright © 2011-2022 走看看