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

和Otto相比, EventBus主要有3点不同:
1. 事件订阅函数不是基于注解(Annotation)的,而是基于命名约定的,在Android 4.0之前的版本中,注解解析起来比较慢 , 事件响应函数默认以“onEvent”开始,可以在EventBus中修改这个值,但是不推荐这么干
2. 事件响应有更多的线程选择
EventBus可以向不同的线程中发布事件,在ThreadMode 枚举中定义了4个线程,只需要在事件响应函数名称“onEvent”后面添加对应的线程类型名称,则还事件响应函数就会在对应的线程中执行,比如事件函数“onEventAsync”就会在另外一个异步线程中执行,ThreadMode定义的4个线程类型如下:
PostThread:事件响应函数和事件发布在同一线程中执行。这个是默认值,这样可以避免线程切换。
MainThread:事件响应函数会在Android应用的主线程(大部分情况下都是UI线程)中执行。
BackgroundThread:事件响应函数会在一个后台线程中执行。如果事件发布函数不是在主线程中,则会立即在事件发布线程中执行响应函数。如果事件发布函数在主线程中,EventBus则会在唯一的一个后台线程中按照顺序来执行所有的后台事件响应函数。

上面的3种事件响应函数,应该能够很快的执行完,不然的话会阻塞各自的事件发布。

Async:事件响应函数在另外一个异步线程中执行。该线程和发布线程、主线程相互独立。如果事件响应函数需要较长的时间来执行,则应该使用该模式,例如 网络访问等。需要注意的是,由于系统并行的限制,应该避免在同一时间触发大量的异步线程。 EventBus使用一个线程池来提高线程的效率。

3. EventBus支持 Sticky Event

有时候某个事件可能会用到多次,比如在前面介绍Event Bus模型一文的示例中,最新的位置更新信息,可能需要多次用到,真对这种情况,您可以把该事件发布为Sticky Event,然后,当需要查询该信息的时候,可以通过Bus的getStickyEvent(ClasseventType) 函数来查询最新发布的Event对象。
同一类型的事件只保存最新的Event对象。
注册和发布事件的函数分别为 registerSticky(…) 和 postSticky(Object event)
在项目主页上还有和Otto之间性能对比的表格,以及性能测试的源码。

Read more:http://blog.chengyunfeng.com/?p=452#ixzz2mbUiuWed

EventBus 使用介绍相关推荐

  1. EventBus简单介绍

    EventBus简单介绍 EventBus简单介绍 EventBus作用 EventBus优缺点 EventBus使用步骤 EventBus的三要素(三个角色) Event Subscriber Pu ...

  2. EventBus的介绍和使用

    EventBus的介绍和使用 EventBus的介绍 作用 引入 成员 综合小案例: 1,Activity中的布局: 2 Activity中的代码: 3 fragment中的代码: 4 .fragme ...

  3. EventBus使用介绍

    EventBus介绍 EventBus是一种用于Android的事件发布-订阅总线,由GreenRobot开发,它利用发布/订阅者者模式来对项目进行解耦,它简化了应用程序内各个组件之间进行通信的复杂度 ...

  4. EventBus的介绍

    什么是EventBus? EventBus是一个Android和Java的开源库,使用发布者/订阅者模式进行松散耦合. EventBus只需几行代码即可实现与分离类的集中通信 - 简化代码,消除依赖关 ...

  5. EventBus介绍

    转自:http://blog.csdn.net/huangyanan1989/article/details/10858695 场景描述 当一个Android应用功能越来越多的时候,保证应用的各个部分 ...

  6. Android 框架炼成 教你怎样写组件间通信框架EventBus

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/41096639 .本文出自:[张鸿洋的博客] 1.概述 关于Eventbus的介绍 ...

  7. 2018年android常用的框架介绍

    转载地址:http://blog.csdn.net/RuingMan/article/details/73546718 http://www.cnblogs.com/jincheng-yangchao ...

  8. EventBus使用

    EventBus简单介绍 EventBus就是事件总线的意思,个人理解为:我们先把一个个事件(event)发送到总线上,然后EventBus根据已注册的订阅者(subscribers)来匹配相应的事件 ...

  9. js之EventBus

    EventBus 许多现代JavaScript框架和库的核心概念是能够将数据和UI封装在模块化.可重用的组件中.这对于开发人员可以在开发整个应用程序时避免使用编写大量重复的代码.虽然这样做非常有用,但 ...

最新文章

  1. Linux下的线程编程
  2. Android 获取SD卡的图片资源
  3. 阿里高级技术专家至简: Service Mesh 在超大规模场景下的落地挑战
  4. Elasticsearch 数据写入原理
  5. 【SAP解决方案干货合集】满满的干货,是您了解华为云SAP解决方案的必备利器
  6. Dom-Attribute对象
  7. dwz框架---(2)表单回调函数
  8. java判断闰年代码_根据输入的年份判断是否是闰年?(在JAVA用if-else)
  9. svn怎么比对文件_svn导出文件进行比较
  10. 设计一个Dog类,包含名字,年龄,颜色三个属性
  11. 初中物理60个重要知识点
  12. 海康威视网络摄像头配置本地存储服务器(远程连接查看回放)
  13. Compose 页面切换动画
  14. java中Date的getTime()函数
  15. 2019年第十届山东省acm省赛总结
  16. 手把手教你阿里云如何进行网站备案(图文教程)
  17. 大学生“8分钟视频征友”成为时尚
  18. 【详细+超基础】Java-学习笔记
  19. 网站配色,CSS主色调配色方案
  20. centos 7 Docker 安装及配置镜像加速

热门文章

  1. 一步一步使用 DialogFragment 封装链式调用 Dialog
  2. dropzonejs中文翻译手册 DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库....
  3. 使用 PowerShell 自动登录 Azure
  4. Zend Framework 开发记录 - 代码片段–jquery–select控件
  5. FarPoint表格数字框中小数点位数的设置
  6. 《C++程序设计语言(特别版)》——忠告
  7. 解决Eclipse Pydev中import时报错:Unresolved import
  8. python学习之路---day12
  9. 2018程序员必备的4大网站推荐(代码、编程、SQL等)
  10. Nginx 配置https证书认证