EventBus 使用介绍

转载 2013年12月05日 20:40:59

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简介及使用

EventBus使用方法
  • duanbokan
  • duanbokan
  • 2016年01月06日 10:16
  • 855

EventBus使用详解(一)——初步使用EventBus

前言:
  • harvic880925
  • harvic880925
  • 2014年10月31日 20:16
  • 353766

Android框架之路——EventBus的使用

一、简介 EventBus是由greenrobot 组织贡献的一个Android事件发布/订阅轻量级框架。EventBus是一个Android端优化的publish/subscribe消息总线,简...
  • bskfnvjtlyzmv867
  • bskfnvjtlyzmv867
  • 2017年05月09日 16:52
  • 1683

深入理解EventBus - 基本使用

EventBus是一款针对Android优化的发布/订阅事件总线,简化组件(线程)之间及通信, 避免了复杂且容易出错的依赖关系和生命周期问题。其优点是开销小,代码更优雅,以及将发送者和接收者解耦。  ...
  • IO_Field
  • IO_Field
  • 2016年08月02日 17:14
  • 1415

EventBus在项目中的应用

June  02 Skip to end of banner
  • Run_Forrest_Run
  • Run_Forrest_Run
  • 2016年07月20日 11:32
  • 487

EventBus 使用心得及技巧

先给官网的建议步骤: 地址如下:https://github.com/greenrobot/EventBus EventBus in 3 steps Define events:...
  • u010566681
  • u010566681
  • 2016年08月04日 16:22
  • 310

使用EventBus在Activity与BroadcastReceiver之间进行通信

判断网络连接状况: activity中的代码 package com.lantu.tuhuadmin.netbroadcast; import android.content.IntentFilte...
  • chenrushui
  • chenrushui
  • 2016年07月13日 16:52
  • 1940

EventBus实现fragment之间的跳转

在我们做项目的时候 很多时候回碰到fragment跳转到fragment,在网上查了一些,其中有三种方法,这些还是不难的,但是不同需求需要实现的功能不同, 这是第二模块的fragment,如果我从点击...
  • u010859484
  • u010859484
  • 2017年01月03日 18:00
  • 1584

EventBus的使用(组件间通信)

EventBus(GitHub地址):https://github.com/greenrobot/EventBus EventBus 是一款针对 Android 优化的发布/订阅事件总线。 ...
  • qq_34801506
  • qq_34801506
  • 2018年01月02日 16:51
  • 103

EventBus基础教程解析,一分钟学会EventBus的使用

EventBus基础教程解析,一分钟学会EventBus的使用近段时间有幸接触EventBus这个不错的Android通信框架,确实在实际开发中方便了不少。以前我们子线程与主线程、Fragment、S...
  • Mr_dsw
  • Mr_dsw
  • 2015年12月15日 10:20
  • 2613
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:EventBus 使用介绍
举报原因:
原因补充:

(最多只允许输入30个字)