文档章节

事件总线EventBus(一) GitHub简介

k
 kim366
发布于 2016/05/13 19:17
字数 855
阅读 3
收藏 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
朝阳
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

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

ihaolin
2014/04/05
0
0
guava eventbus源码解析

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

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

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

Realfighter
2014/12/29
0
0
【Android翻译】组件通信模式

目标:避免紧耦合 本文对原文进行了精简 原文链接:Communication patterns for application components 紧耦合 组件之间相互持有引用,以及直接调用方法.在下面的代码中,MenuFragment持有Magaz...

xesam
2015/04/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

70.shell的函数 数组 告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析 20.16/20.17 shell中的函数: ~1. 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段...

王鑫linux
今天
2
0
分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
今天
6
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
今天
4
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
今天
45
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部