Android开源框架——事件总线 EventBus3.0讲解
开源项目地址
官网: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讲解相关推荐
- Android开源框架——事件总线otto
开源官网:https://github.com/square/otto guide:http://square.github.io/otto/ otto 框架就是事件分发总线. 1.0 为什么要使用事 ...
- Android自定义事件总线,android事件总线EventBus3.0使用方法详解
一.EventBus概述 1.EventBus的三要素 EventBus有三个主要的元素需要我们先了解一下: Event:事件,可以是任意类型的对象. Subscriber:事件订阅者,在EventB ...
- Android事件总线 EventBus3.0用法学习
http://blog.csdn.net/itachi85/article/details/52205464 1.EventBus的三要素 Event:事件,可以是任意类型的对象. Subscribe ...
- 2019年 Android 开源框架 排行榜 TOP 60
2019年 Android 开源框架 排行榜 TOP 50 1.Retrofit 一句话介绍:Retrofit是一款类型安全的网络框架,基于HTTP协议,服务于Android和java语言 上榜理由: ...
- Android开源框架【集合】
Android开源框架[集合] 图解一览 Square& JakeWharton 框架名称 功能描述 Picasso 一个强大的图片下载与缓存的库 OkHttp Square出品,一个Http ...
- Android开源框架Afinal第一篇——揭开圣女的面纱
Android开源框架Afinal第一篇--揭开圣女的面纱 分类: Android开源框架哪点事2013-09-02 14:25 260人阅读 评论(0) 收藏 举报 Afinal 这是Afinal在 ...
- Android开源框架PowerfulViewLibrary——PowerfulEditText的介绍和源码解析
本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 转载请注明出处:http://blog.csdn.net/chay_chan/article/details/63685905 An ...
- Android开源框架——图表MPAndroidChart
开源官网:https://github.com/PhilJay/MPAndroidChart Android开源框架--图表MPAndroidChart 特点 配置 图表类型 Demo MPAndro ...
- Android开源框架源码鉴赏:VirtualAPK
文章目录 一 VirtualAPK的初始化流程 二 VirtualAPK的的加载流程 三 VirtualAPK启动组件的流程 3.1 Activity 3.2 Service 3.3 Broadcas ...
最新文章
- 最受欢迎的ASP.NET的CMS下载
- 开发者说:基于 Nacos 的网关灰度路由和服务权重灰度
- 怎么用leangoo做需求管理?(用户故事地图)
- C语言基础:C语言宏定义(4) - 多文件编译
- java。接口和抽象类区别
- Git missing Change-Id in commit message footer解决方法
- linux下mysql连接错误解决
- 工厂模式,简单工厂模式,抽象工厂模式三者有什么区别
- 链家大数据多维分析引擎实践
- Atitit it软件领域职称评级规定,精深方向。 目录 1. 软件工程师资格证	1 1.1. 法规规范 十大标准,三级五晋制。	1 1.2. 三级制 使用者 原理维修者 制造设计者	1 1.3.
- fill()函数和fill_n()函数
- 云服务器磁盘扩容后不显示,腾讯云服务器磁盘扩容问题小记
- 记录这一刻:开通原创保护功能
- arcgis 去除影像黑色边框(nodata)
- 岩板铺地好吗_**岩板铺地「泉州泰亨石材供应」
- 如何使用ffmpeg分离视频和音频t
- 微信小程序定义公共方法
- python爬虫获取拉钩网在线搜索招聘信息(超实用!)
- EasyExcel写入excel模板
- 外呼系统从三个维度提升电销业绩
热门文章
- C/C++训练1---最大公约数与最小公倍数_JAVA
- C语言实验——大小写转换_JAVA
- Caffe学习系列(9):运行caffe自带的两个简单例子
- 设计模式学习----装饰器模式
- 在 Java 应用程序中使用 Elasticsearch: 高性能 RESTful 搜索引擎和文档存储快速入门指南
- 词袋模型BoW图像检索Python实战
- 中国计算机学会CCF推荐国际学术会议和期刊目录-计算机体系结构/并行与分布计算/存储系统
- Sed教程(四):基本命令、特殊字符、字符串
- 【OpenCV3】模板匹配——cv::matchTemplate()详解
- Python入门学习(四)