文档章节

事件总线EventBus(一) GitHub简介

k
 kim366
发布于 2016/05/13 19:17
字数 855
阅读 3
收藏 0
点赞 2
评论 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

作者:郭孝星 校对:郭孝星 关于项目 Android Open Framework analysis项目主要用来分析Android平台主流开源框架的源码与原理实现。 文章目录 一 注册订阅者 二 发布事件Event 三 接收事件E...

郭孝星 ⋅ 03/27 ⋅ 0

RxJava实现的EventBus-RxBus

使用RxJava2实现RxBus 当我们使用RxJava2实现EventBus模式时,我们称其为RxBus. 注意:这仅作为一个例子。 那么,就让我们来看看如何使用RxJava2实现RxBus吧 首先,你得了解RxJava中有关sub...

塞上牧羊空许约 ⋅ 05/12 ⋅ 0

【死磕Sharding-jdbc】—–路由&执行

原文作者:阿飞Javaer 原文链接:https://www.jianshu.com/p/09efada2d086 继续以模块中的为基础,剖析分库分表简单查询SQL实现--,即如何执行简单的查询SQL,接下来的分析以执行SQL语句为例...

飞哥-Javaer ⋅ 05/03 ⋅ 0

你知道event库吗?教你如何写一个自己的event库

在使用BmobSDK开发App的时候,会有很多异步回调,类似如登录成功,插入数据成功的事件,虽然V3.5.0开始内部用rxjava去重构,也提供了rx风格的api,不过写事件回调的方法还是比较烦,这时候你...

小小琪bmob后端云 ⋅ 03/16 ⋅ 0

gis-luq/RuntimeViewer

RuntimeViewer —— 基于ArcGIS Runtime 100.x开发的移动应用程序框架 组件式开发框架,兼容手机、平板多种设备。 平板模式 手机模式 使用说明 项目采用插件化结构设计,文件夹架构说明如下 ...

gis-luq ⋅ 05/11 ⋅ 0

Android之撸一个类似EventBus的轮子

用过eventBus的人都知道,在组件及时通讯中,使用非常方便。 一般我们是这样做的:总结为三部曲: 这就是EventBus的强大之处,用过的人都说好,哈哈哈哈!!!! 上图描述吧。有图有真相 Cr...

还有de小星 ⋅ 05/25 ⋅ 0

gis-luq/RuntimeViewer3D

RuntimeViewer —— 基于ArcGIS Runtime 100.x开发的移动应用程序框架 组件式开发框架,兼容手机、平板多种设备。 平板模式 手机模式 如何快速运行应用程序? 使用git工具下来工程并将工程导...

gis-luq ⋅ 前天 ⋅ 0

基于 MVP 架构使用Android通用开发框架快速开发微博项目实战

课程目标: 基于 MVP 架构使用Android通用开发框架快速开发微博项目实战 适应人群: 适合大学生和初中级android开发工程师,可以系统化的微博类APP的开发,系统化掌握商业化项目的开发。* 不...

13122542396 ⋅ 05/25 ⋅ 0

阿里ARouter路由实现Android模块化开发

概述 从 2016 年开始,模块化在 Android 社区越来越多的被提及。随着移动平台的不断发展,移动平台上的软件慢慢走向复杂化,体积也变得臃肿庞大,为了降低大型软件复杂性和耦合度,同时也为了...

code_xzh ⋅ 04/24 ⋅ 0

Android官方架构组件之LiveData + ViewModel + Room 源码分析一

简单使用案例: MainActivity: MessageViewModel: 其中viewModel.getMessageObserver().observe(this, new Observer() ) 中的this即SupportActivity :LifecycleOwner SupportActivity im......

编程之乐 ⋅ 05/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

MySQL 数据库设计总结

规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎。 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节...

OSC_cnhwTY ⋅ 43分钟前 ⋅ 0

多线程(四)

线程池和Exector框架 什么是线程池? 降低资源的消耗 提高响应速度,任务:T1创建线程时间,T2任务执行时间,T3线程销毁时间,线程池没有或者减少T1和T3 提高线程的可管理性。 线程池要做些什...

这很耳东先生 ⋅ 51分钟前 ⋅ 0

使用SpringMVC的@Validated注解验证

1、SpringMVC验证@Validated的使用 第一步:编写国际化消息资源文件 编写国际化消息资源ValidatedMessage.properties文件主要是用来显示错误的消息定制 [java] view plain copy edit.userna...

瑟青豆 ⋅ 今天 ⋅ 0

19.压缩工具gzip bzip2 xz

6月22日任务 6.1 压缩打包介绍 6.2 gzip压缩工具 6.3 bzip2压缩工具 6.4 xz压缩工具 6.1 压缩打包介绍: linux中常见的一些压缩文件 .zip .gz .bz2 .xz .tar .gz .tar .bz2 .tar.xz 建立一些文...

王鑫linux ⋅ 今天 ⋅ 0

6. Shell 函数 和 定向输出

Shell 常用函数 简洁:目前没怎么在Shell 脚本中使用过函数,哈哈,不过,以后可能会用。就像java8的函数式编程,以后获取会用吧,行吧,那咱们简单的看一下具体的使用 Shell函数格式 linux ...

AHUSKY ⋅ 今天 ⋅ 0

单片机软件定时器

之前写了一个软件定时器,发现不够优化,和友好,现在重写了 soft_timer.h #ifndef _SOFT_TIMER_H_#define _SOFT_TIMER_H_#include "sys.h"typedef void (*timer_callback_function)(vo...

猎人嘻嘻哈哈的 ⋅ 今天 ⋅ 0

好的资料搜说引擎

鸠摩搜书 简介:鸠摩搜书是一个电子书搜索引擎。它汇集了多个网盘和电子书平台的资源,真所谓大而全。而且它还支持筛选txt,pdf,mobi,epub、azw3格式文件。还显示来自不同网站的资源。对了,...

乔三爷 ⋅ 今天 ⋅ 0

Debian下安装PostgreSQL的表分区插件pg_pathman

先安装基础的编译环境 apt-get install build-essential libssl1.0-dev libkrb5-dev 将pg的bin目录加入环境变量,主要是要使用 pg_config export PATH=$PATH:/usr/lib/postgresql/10/bin 进......

玛雅牛 ⋅ 今天 ⋅ 0

inno安装

#define MyAppName "HoldChipEngin" #define MyAppVersion "1.0" #define MyAppPublisher "Hold Chip, Inc." #define MyAppURL "http://www.holdchip.com/" #define MyAppExeName "HoldChipE......

backtrackx ⋅ 今天 ⋅ 0

Linux(CentOS)下配置php运行环境及nginx解析php

【part1:搭建php环境】 1.选在自己需要安装的安装包版本,wget命令下载到服务器响应目录 http://php.net/releases/ 2.解压安装包 tar zxf php-x.x.x 3.cd到解压目录执行如下操作 cd ../php-...

硅谷课堂 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部