文档章节

事件总线EventBus(一) GitHub简介

k
 kim366
发布于 2016/05/13 19:17
字数 855
阅读 6
收藏 0

EventBus(事件总线)

EventBus is publish/subscribe(发布/订阅) event bus optimized for Android.


EventBus...

  • simplifies the communication between components   简化组件间通信过程
    • decouples event senders and receiver   解耦事件发布者和接收者
    • performs well with Activities, Fragments, and background threads  在act,Frag和后台线程中表现良好
    • avoids complex and error-prone dependencies and life cycle issues  避免复杂和易错的依赖和生命周期问题
  • makes your code simpler 简化代码
  • is fast 速度快
  • is tiny (<50k jar) 体量小
  • is proven in practice by apps with 100,000,000+ installs  在100,000,000+的应用中集成检验
  • has advanced features like delivery threads, subscriber priorities, etc.  具有传递线程和订阅者优先等高级特性????

    Build Status

EventBus in 3 steps   集成三步骤

  1. Define events:   定义事件
    public class MessageEvent { /* Additional fields if needed */ }

  2. Prepare subscribers:  准备订阅者
    eventBus.register(this);
    public void onEvent(AnyEventType event) {/* Do something */};

  3. Post events:  发布事件
    eventBus.post(event);


Add EventBus to your project   在项目中集成EventBus

EventBus is available on Maven Central. Please ensure that you are using the latest version by checking here

Gradle:

    compile 'de.greenrobot:eventbus:2.4.0'

Maven:

<dependency>
    <groupId>de.greenrobot</groupId>
    <artifactId>eventbus</artifactId>
    <version>2.4.0</version>
</dependency>

Or download EventBus from Maven Central

How-to, Developer Documentation

Details on EventBus and its API are available in the HOWTO document.

How does EventBus compare to other solutions, like Otto from Square? Check this comparison.

Additional Features and Notes  额外特性

  • NOT based on annotations: Querying annotations are slow on Android, especially before Android 4.0. Have a look at this Android bug report.
  • 不是基于注解: 
  • Based on conventions: Event handling methods are called "onEvent".
  • 基于约定: 事件处理方法被称为onEvent
  • Performance optimized: It's probably the fastest event bus for Android.
  • 性能优化:android平台最快的事件总线
  • Convenience singleton: You can get a process wide event bus instance by calling EventBus.getDefault(). You can still call new EventBus() to create any number of local busses.
  • 方便的单例:可以通过调用EventBus.getDefualt()方法获得一个进程作用域的事件总线实例。 也可以调用new EventBus()创建任意数量的本地总线。
  • Subscriber and event inheritance: Event handler methods may be defined in super classes, and events are posted to handlers of the event's super classes including any implemented interfaces. For example, subscriber may register to events of the type Object to receive all events posted on the event bus.
  • 订阅者和事件继承: 事件处理方法可以在超类中定义,然后,事件被发布到事件的超类的处理器中,包括所有被实现的接口。例如,订阅者可能注册对象类型的事件,用于接收事件总线中发布的所有事件。

FAQ

Q: How is EventBus different to Android's BroadcastReceiver/Intent system?
A: Unlike Android's BroadcastReceiver/Intent system, EventBus uses standard Java classes as events and offers a more convenient API. EventBus is intended for a lot more uses cases where you wouldn't want to go through the hassle of setting up Intents, preparing Intent extras, implementing broadcast receivers, and extracting Intent extras again. Also, EventBus comes with a much lower overhead.

Q: EventBus和Android中的BroadCastReceiver/Intent 系统有何不同?

A: 不同于Android的BroadCastReceiver/Intent系统,EventBus使用标准的Java类作为事件并提供更为方便的API, EventBus 的设计是为了避免创建Intents,准备extra数据,实现Broadcast Receiver, 以及提取extra等情况下可能遇到的一系列麻烦。EventBus具有更低的开销。

Q: How to do pull requests?
A: Ensure good code quality and consistent formatting. EventBus has a good test coverage: if you propose a new feature or fix a bug, please add a unit test.

Release History, License

CHANGELOG

EventBus binaries and source code can be used according to the Apache License, Version 2.0.

More Open Source by greenrobot

greenrobot-common is a set of utility classes and hash functions for Android & Java projects.

greenDAO is an ORM optimized for Android: it maps database tables to Java objects and uses code generation for optimal speed.

Follow us on Google+ to stay up to date.

本文转载自:http://blog.csdn.net/oyangyujun/article/details/47209199

共有 人打赏支持
k
粉丝 1
博文 129
码字总数 0
作品 0
朝阳
私信 提问
走近Guava(六): 事件总线EventBus

EventBus: 创建EventBus实例: EventBus eventBus = new EventBus();//或者EventBus eventBus = new EventBus(TradeAccountEvent.class.getName());//带标识符,用于日志记录 订阅事件: 模拟......

ihaolin
2014/04/05
0
0
SimpleNews 项目的重构之旅(3) -EventBus 接入

通过需求使用 EventBus 之前就接触过 EventBus ,只是没有在项目中使用过,练习地址 WPEventBusDemo ,今天在项目中接入 EventBus 。 最开始的目的是为了做一个完全退出机制,看了网上很多用...

無名小子的杂货铺
2017/06/02
0
0
Android EventBus二三事

废话很多的前言 EventBus,也即事件总线。在[wiki][event_monitor]上有关于Event Monitor的一个说法: Event monitoring makes use of a logical bus to transport event occurrences from so......

苦辛味
2014/09/21
0
0
guava eventbus源码解析

说在前面 本文转自“天河聊技术”微信公众号 事件驱动模型设计是一种优雅的程序设计方式,实现有很多,原理都是发布与订阅,观察者设计模式实现,java自带的实现、spring ioc的事件驱动模型,...

天河2018
07/07
0
0
Guava库学习:学习Guava EventBus(一)EventBus

在软件开发过程中,对象信息的分享以及相互直接的协作是必须的,困难在于确保对象之间的沟通是有效完成的,而不是拥有成本高度耦合的组件。当对象对其他组件的责任有太多的细节时,它被认为是...

Realfighter
2014/12/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

基于对象特征的推荐

(本实验选用数据为真实电商脱敏数据,仅用于学习,请勿商用) 在上一期基于协同过滤的的推荐场景中,我们介绍了如何通过PAI快速搭建一个基于协同过滤方案的推荐系统,这一节会介绍一些如何基...

阿里云官方博客
9分钟前
1
0
Ugly Number(leetcode263)

Write a program to check whether a given number is an ugly number. Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. Example 1: Input: 6Output: true......

woshixin
33分钟前
2
0
深度模型从研者 眼里的 似然估计 & Hessain 海森矩阵 & Fisher Information (费雪信息)

深度模型的训练的基本依据是最小化模型拟合数据的误差。旨在不仅知其然(如何构建和训练一个深度模型),还应知其所以然(为什么这样训练,可以做哪些优化)。我们就会发现,有很多研究者,在...

刘小米_思聪
37分钟前
0
0
【双十二】12 月 12 日 12 点 12 分限量抢福利,云计算不剁手!

活动详情 1.首充豪礼 双十二当日,新用户首充 200 元送 200 元代金券!仅限前 88 名!先到先得!拼手速!(新用户指 12 月 12 日前已完成注册但从未充值过的用户)
 2.超值返券 双十二当日,...

七牛云
今天
4
0
Calculate Linux 发布 18 LXQt是基于Gentoo的发行版

导读 Calculate Linux 是一个基于 Gentoo 并与 Gentoo 完全兼容的滚动更新发行版家族,专为企业环境下的快速部署而优化。其提供多个不同的分支版本,分别适用于桌面、服务器等应用场景。该项...

问题终结者
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部