EventBus Android

Android 开源框架
授权协议 Apache
开发语言 Java
所属分类 手机/移动开发、 手机开发包
软件类型 开源软件
地区 不详
投 递 者 裘嘉树
操作系统 Android
开源组织
适用人群 未知
 软件概览

EventBus是一个观察者模式的实现。

背景介绍

如果你学习过设计模式,那么当想通知其他组件某些事情发生时你一定会使用观察者模式。好了,既然能想到这个设计模式,那么就来看一个屌爆天的Android开源框架EventBus。主要功能是替代Intent、Handler、BroadCast在Fragment、Activity、Service、线程之间传递消息。他的最牛逼优点是开销小,代码简洁,解耦代码。

基础介绍

    上面说了,EventBus是一个观察者模式的实现,既然这样,那他就有如下三个要素:

  • Event:事件

  • Subscriber:事件订阅者,接收特定的事件。

  • Publisher:事件发布者,用于通知Subscriber有事件发生。

其中,Event可以使任意类型对象。Subscriber都是以约定的onEvent开头的函数,具体是onEvent,onEventMainThread,onEventBackgroundThread,onEventAsync这四个。Publisher可以通过post(Object)在任意线程任意位置发送事件。

官方这个图就很直观的说明了这种观察者模式的架构:

依据开源库组件的说明文档来操作:

  1. 在工程gradle中添加:compile ‘de.greenrobot:eventbus:2.4.0’。

  2. 按照文档HOWTO.md进行操作。

Subscriber以onEvent开头的4个函数区别:

  • onEvent:事件的处理在和事件的发送在相同的线程,所以事件处理时间不应太长,不然影响事件的发送线程。

  • onEventMainThread: 事件的处理会在UI线程中执行。事件处理时间不能太长,长了会出现臭名远之的ANR。

  • onEventBackgroundThread:事件的处理会在一个后台线程中执行。虽然名字是BackgroundThread,事件处理是在后台线程,但事件处理时间还是不应该太长,因为如果发送事件的线程是后台线程,会直接在当前后台线程执行事件;如果当前线程是UI线程,事件会被加到一个队列中,由一个线程依次处理这些事件,如果某个事件处理时间太长,会阻塞后面的事件的派发或处理。

  • onEventAsync:事件处理会在单独的线程中执行,主要用于在后台线程中执行耗时操作,每个事件会开启一个线程,但最好限制线程的数目。

  • 今天遇到一个小问题,想在适配器里面传值给activity,就在想有没有一套解决这个问题的开源项目,搜了一下发现,还真有 我主要还是针对我使用的方面,描述的,不会搞的很全面 EventBus使用详解 - 简书概述 EventBus是一个Android事件发布/订阅框架,通过解耦发布者和订阅者简化Android事件传递,这里的事件可以理解为消息。事件传递既可以用于Android四大...https:/

  • 简介 EventBus是一种用于Android的事件发布-订阅总线 它简化了应用程序内各个组件之间进行通信的复杂度,尤其是碎片之间进行通信的问题,可以避免由于使用广播通信而带来的诸多不便 普通事件:通过post()方法发出的普通事件,会被已经注册的订阅者接收到,若订阅者是在消息发送之后才注册,那么是不会接收到该事件的 粘性事件:而粘性事件是可以被事件发出之后才注册的订阅者接收到,也可以在事件发出之

  • 使用详解以及各版本的一些区别, 在了解版本区别之前先简单了解一下。 EventBus文档 http://greenrobot.org/eventbus/documentation EventBus源码 https://github.com/greenrobot/EventBus EventBus是什么? EventBus是一种发布者和订阅者的事件分发模式。可以这么理解,比如我们订阅的Android

  • 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40920453,本文出自:【张鸿洋的博客】 上一篇带大家初步了解了EventBus的使用方式,详见:Android EventBus实战 没听过你就out了,本篇博客将解析EventBus的源码,相信能够让大家深入理解该框架的实现,也能解决很多在使用中的疑问:为什么可以这么做?为什

  • 1- 简介 EventBus是一种用于Android的事件发布-订阅总线,由GreenRobot开发,Gihub地址是:EventBus。它简化了应用程序内各个组件之间进行通信的复杂度,尤其是碎片之间进行通信的问题,可以避免由于使用广播通信而带来的诸多不便。 2- 四种线程 POSTING:默认,表示事件处理函数的线程跟发布事件的线程在同一个线程。 MAIN:表示事件处理函数的线程在主线程(UI)

  • 一款解决了高耦合的使用简单的在Activity,Fragment,Thread,Service之间通信的框架,堪称神器!中高阶工程师必备! 类似bean类,可以用来区别接受者 public class MessageEvent { private String message; public MessageEvent(String message) { thi

  • 介绍 EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。 基本使用 implementation 'org.greenrobot:eventbus:3.1.1' 1.定义一个事件类 public c

 相关资料
  • 一、前言 关于开源框架这块,其实主要是针对自己项目中使用到的框架进行准备。从使用,到使用场景、优缺点以及源码实现都需要逐一掌握理解。这一部分是向面试官展示自己水平与能力的一个重要部分,所以要着重准备。 针对开源框架,该部分整理了自己在做项目过程中使用到的几个框架。大多都是从网上找的一些大佬的文章,深入浅出,着重讲述源码实现,可以帮助自己更好的理解。 二、目录 OkHttp解析 Retrofit解析

  • 本文向大家介绍Python六大开源框架对比,包括了Python六大开源框架对比的使用技巧和注意事项,需要的朋友参考一下 Python 是一门动态、面向对象语言。其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性。除了语言本身的设计目的之外,Python标准 库也是值得大家称赞的,Python甚至还自带服务器。其它方面,Python拥有足够多的免费数据函数库、免费的Web网页模

  • 本文向大家介绍JavaScript跨平台的开源框架NativeScript,包括了JavaScript跨平台的开源框架NativeScript的使用技巧和注意事项,需要的朋友参考一下 NativeScript是一款使用JavaScript语言来构建跨平台原生移动应用的开源框架,支持iOS、Android和Windows Phone。且NativeScript的使用没有过多繁杂的要求,只需使用自己已

  • 作者:hiyuki Mpx是一款致力于提高小程序开发体验的增强型小程序框架,通过Mpx,我们能够以最先进的web开发体验(Vue + Webpack)来开发生产性能深度优化的小程序,Mpx具有以下一些优秀特性: 数据响应特性(watch/computed) 增强的模板语法(动态组件/样式绑定/类名绑定/内联事件函数/双向绑定等) 深度性能优化(原生自定义组件/基于依赖收集和数据变化的setData

  • SAE上部署Dokuwiki的开源框架,显示无法登陆注册,同时Email功能无法使用。 2014-09-19 15:12 提问者采纳 去SAE应用仓库看看吧 sae不支持写入 Email也要修改代码,SAE邮件class , 目前只支持SMTP. <?php $mail =new SaeMail(); $mail->setAttach(array("my_photo.jpg" =>"照片的二进制数

  • 本文向大家介绍浅谈Zookeeper开源客户端框架Curator,包括了浅谈Zookeeper开源客户端框架Curator的使用技巧和注意事项,需要的朋友参考一下 zookeepercurator Curator是Netflix开源的一套ZooKeeper客户端框架. Netflix在使用ZooKeeper的过程中发现ZooKeeper自带的客户端太底层, 应用方在使用的时候需要自己处理很多事情,

  • 本文向大家介绍详解开源的JavaScript插件化框架MinimaJS,包括了详解开源的JavaScript插件化框架MinimaJS的使用技巧和注意事项,需要的朋友参考一下 本文介绍我开发的一个JavaScript编写的插件化框架——MinimaJS,完全开源,源码下载地址:https://github.com/lorry2018/minimajs。该框架参考OSGi规范,将该规范定义的三大插件

  • 本文向大家介绍25个实用酷炫的Android开源UI框架,包括了25个实用酷炫的Android开源UI框架的使用技巧和注意事项,需要的朋友参考一下 最近找了一些合适开源控件,这样在日常工作中会更加省时,再此分享给大家,希望能对大家有帮助,此博文介绍的都是UI上面的框架,接下来会有其他的开源框架(如:HTTP框架、DB框架)。 1.Side-Menu.Android 分类侧滑菜单,Yalantis