Eventbus 3.0的简单实用
时间:2019-01-09
本文章向大家介绍Eventbus 3.0的简单实用,主要包括Eventbus 3.0的简单实用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、介绍
项目开发的时候经常使用到应用程序的各组件间或组件与后台线程间进行通信,例如:在子线程中进行请求数据,当数据请求完毕后通过Handler或者是广播通知UI,Fragment之间可以通过Listener进行通信等。当工程越来越大的时候,继续使用Intent、Handler、Broadcast进行模块间通信时代码量大,而且高度耦合。不利于项目的后期迭代,eventBus 就很好的解决了这个问题。
2、关于Eventbus的详细介绍,大家可以去官网http://greenrobot.org/eventbus/详细了解。
3、关于EventBus的概述
出发事件可以是任意类型。
在EventBus3.0之前必须定义以onEvent开头的几个方法,分别是onEvent、onEventMainThread、onEventBackgroundThread和onEventAsync,一般都使用onEventMainThread;在3.0之后事件处理的方法名可以随意取,需要在方法名上加上注解@subscribe(),并且指定线程模型,默认是POSTING。
我们可以在任意线程里发布事件,一般情况下,使用EventBus.getDefault()就可以得到一个EventBus对象,然后再调用post(Object)方法即可。
4、EventBus的简单使用
(1)在module的build.gradle引用库
implementation 'org.greenrobot:eventbus:3.0.0'
(2)新建一个类,用于消息传递的Event类
//例:
public class ShareUserEvb {
private String userName;
private String userId;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
}
(3)在要接收消息的页面注册Eventbus:(一般是在Activity的onCreate()方法或者是Fragment的onActivityCreated()里写)
EventBus.getDefault().register(this);
(4)在要接收消息的页面销毁的时候解绑(很重要)一般在onDestroy()里写
//fragment里的解绑位置
@Override
public void onDestroyView() {
super.onDestroyView();
//在界面销毁的地方要解绑
EventBus.getDefault().unregister(this);
}
(5)如何获取传过来的值呢?
@Subscribe
public void onEventMainThread(ShareUserEvb event) {
String message = event.getUserId();
}
(6)在需要传值的页面进行传值
//其实这一句就可以了,我这里是测试
ShareUserEvb event = new ShareUserEvb();
event.setUserId("111");
//post就是把消息发送出去
EventBus.getDefault().post(event);
到这里就结束啦:附上eventbus源码地址https://github.com/greenrobot/EventBus
- 使用JPA中@Query 注解实现update 操作
- 配合dedecms内容模型实现后台输入栏目id前端输出文章列表
- SpringBoot之前端文件管理
- Spring Boot 设置静态资源访问
- IDEA更换主题
- 用正则表达式给字符串属性值都加上双引号
- Spring Boot修改启动端口
- Packet for query is too large (12238 > 1024). You can change this value
- win10下端口被占用解决办法
- 微信小程序开发教程第九章:微信小程序拍照收纳开发以及删除名片等
- centos 安装sbt
- 微信小程序开发教程第七章:微信小程序编辑名片页面开发
- idea中使用scala运行spark出现Exception in thread "main" java.lang.NoClassDefFoundError: scala/collection/Gen
- 使用JPA中@Query 注解实现update 操作
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 神器你值得拥有——CoolFormat代码一键自动格式化工具,支持Verilog
- 一个简单现实案例挑战 PowerBI 水平测试 - 深度解析
- [译]使用DOT语言和GraphvizOnline来可视化你的ASP.NETCore3.0终结点01
- 探索 React 内核:深入 Fiber 架构和协调算法
- [经验]使用Keil MDK+Jlink-OB下载失败的解决办法
- ESP8266两种工作模式数据传输测试
- 『真香警告』这33个超级好用的CSS选择器,你可能见都没见过。
- [踩坑]STM32外部8M晶体不起振会有什么现象?
- 干掉 GuavaCache:Caffeine 才是本地缓存的王
- 美团数据怎么爬,看看这个文章吧!
- [硬件]关于SPI Flash那些你不知道的事儿
- 「新特性」Spring Boot 全局懒加载机制了解一下
- 做olap一定要要了解的Druid存储结构
- 【ST开发板评测】使用Python来开发STM32F411
- 一文详解 Ansible 自动化运维!