开源项目地址

官网:https://github.com/greenrobot/EventBus

介绍

EventBus主要使用了观察者模式设计方案。主要替代Intent、Handler、 BroadCast在Activity、Fragment、Service,多线程中传输数据.

官方图

因为是观察者模式,所以具备三要素:

- Event :  事件
- Publisher : 事件发布者
- Subscriber :   事件订阅者,接收发布的事件

Event可以为任意类型的对象,Publisher可以通过post( )方法在任意位置(包括任意线程)将事件发送出去,Subscriber通过四种方法对事件进行处理。

事件处理函数

- ThreadMode.Posting                    在发送线程中运行
- ThreadMode.Main                        UI线程中运行
- ThreadMode.Background             在后台线程中运行
- ThreadMode.Async                       在后台线程中运行,且为异步

@subscribe(threadMode = ThreadMode.xxx)
public void onUserEvent(UserEvent event){

}

EventBus3.0

Gradle:

compile ‘org.greenrobot:eventbus:3.0.0’

Marven:

简单Demo

package com.android.eventbustest;/*** 简单的事件对象*/
public class MessageBean {public String message;public String getMessage(){return this.message;}public void setMessage(String message){this.message = message;}
}
package com.android.eventbustest;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;public class MainActivity extends Activity implements View.OnClickListener {private TextView textView;private Button btn;private EventBus bus = EventBus.getDefault();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = (TextView) findViewById(R.id.message);btn = (Button) findViewById(R.id.change);btn.setOnClickListener(this);//注册EventBusbus.register(this);}@Overrideprotected void onDestroy() {//解除注册EventBusbus.unregister(this);super.onDestroy();}//订阅者事件处理@Subscribe(threadMode = ThreadMode.POSTING)public void onUserEvent(MessageBean messageBean){textView.setText(messageBean.getMessage());}@Overridepublic void onClick(View v) {MessageBean messageBean = new MessageBean();messageBean.setMessage("success");//发布者发布事件bus.post(messageBean);}
}

有问题,欢迎大家一起讨论

参考文章:
[1]https://github.com/greenrobot/EventBus
[2]http://blog.csdn.net/wl1769127285/article/details/51065015
[3]http://blog.csdn.net/angcyo/article/details/48166849

Android开源框架——事件总线 EventBus3.0讲解相关推荐

  1. Android开源框架——事件总线otto

    开源官网:https://github.com/square/otto guide:http://square.github.io/otto/ otto 框架就是事件分发总线. 1.0 为什么要使用事 ...

  2. Android自定义事件总线,android事件总线EventBus3.0使用方法详解

    一.EventBus概述 1.EventBus的三要素 EventBus有三个主要的元素需要我们先了解一下: Event:事件,可以是任意类型的对象. Subscriber:事件订阅者,在EventB ...

  3. Android事件总线 EventBus3.0用法学习

    http://blog.csdn.net/itachi85/article/details/52205464 1.EventBus的三要素 Event:事件,可以是任意类型的对象. Subscribe ...

  4. 2019年 Android 开源框架 排行榜 TOP 60

    2019年 Android 开源框架 排行榜 TOP 50 1.Retrofit 一句话介绍:Retrofit是一款类型安全的网络框架,基于HTTP协议,服务于Android和java语言 上榜理由: ...

  5. Android开源框架【集合】

    Android开源框架[集合] 图解一览 Square& JakeWharton 框架名称 功能描述 Picasso 一个强大的图片下载与缓存的库 OkHttp Square出品,一个Http ...

  6. Android开源框架Afinal第一篇——揭开圣女的面纱

    Android开源框架Afinal第一篇--揭开圣女的面纱 分类: Android开源框架哪点事2013-09-02 14:25 260人阅读 评论(0) 收藏 举报 Afinal 这是Afinal在 ...

  7. Android开源框架PowerfulViewLibrary——PowerfulEditText的介绍和源码解析

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 转载请注明出处:http://blog.csdn.net/chay_chan/article/details/63685905 An ...

  8. Android开源框架——图表MPAndroidChart

    开源官网:https://github.com/PhilJay/MPAndroidChart Android开源框架--图表MPAndroidChart 特点 配置 图表类型 Demo MPAndro ...

  9. Android开源框架源码鉴赏:VirtualAPK

    文章目录 一 VirtualAPK的初始化流程 二 VirtualAPK的的加载流程 三 VirtualAPK启动组件的流程 3.1 Activity 3.2 Service 3.3 Broadcas ...

最新文章

  1. 最受欢迎的ASP.NET的CMS下载
  2. 开发者说:基于 Nacos 的网关灰度路由和服务权重灰度
  3. 怎么用leangoo做需求管理?(用户故事地图)
  4. C语言基础:C语言宏定义(4) - 多文件编译
  5. java。接口和抽象类区别
  6. Git missing Change-Id in commit message footer解决方法
  7. linux下mysql连接错误解决
  8. 工厂模式,简单工厂模式,抽象工厂模式三者有什么区别
  9. 链家大数据多维分析引擎实践
  10. Atitit it软件领域职称评级规定,精深方向。 目录 1. 软件工程师资格证 1 1.1. 法规规范 十大标准,三级五晋制。 1 1.2. 三级制 使用者 原理维修者 制造设计者 1 1.3.
  11. fill()函数和fill_n()函数
  12. 云服务器磁盘扩容后不显示,腾讯云服务器磁盘扩容问题小记
  13. 记录这一刻:开通原创保护功能
  14. arcgis 去除影像黑色边框(nodata)
  15. 岩板铺地好吗_**岩板铺地「泉州泰亨石材供应」
  16. 如何使用ffmpeg分离视频和音频t
  17. 微信小程序定义公共方法
  18. python爬虫获取拉钩网在线搜索招聘信息(超实用!)
  19. EasyExcel写入excel模板
  20. 外呼系统从三个维度提升电销业绩

热门文章

  1. C/C++训练1---最大公约数与最小公倍数_JAVA
  2. C语言实验——大小写转换_JAVA
  3. Caffe学习系列(9):运行caffe自带的两个简单例子
  4. 设计模式学习----装饰器模式
  5. 在 Java 应用程序中使用 Elasticsearch: 高性能 RESTful 搜索引擎和文档存储快速入门指南
  6. 词袋模型BoW图像检索Python实战
  7. 中国计算机学会CCF推荐国际学术会议和期刊目录-计算机体系结构/并行与分布计算/存储系统
  8. Sed教程(四):基本命令、特殊字符、字符串
  9. 【OpenCV3】模板匹配——cv::matchTemplate()详解
  10. Python入门学习(四)