文章目录 一、EventBus 单例获取 二、EventBus 构造函数 三、EventBus 构建者 一、EventBus 单例获取 ---- 在 EventBus 中 , 不论是进行注册 , 取消注册..., 还是发送信息 , 都需要调用 EventBus.getDefault() , 获取一个 EventBus 的实例对象 , 这个实例对象是 单例对象 ; 在 EventBus.getDefault(...前 , 突然在其它线程中创建了 EventBus 并且注册了订阅者 , 新创建的 EventBus 实例对象肯定会覆盖旧的 EventBus , 但是旧的 EventBus 中的订阅者就彻底消失了 ;...双重加锁校验 可以保证 EventBus 实例对象 全局 全时间线 唯一 ; /** * EventBus是Java和Android的中央发布/订阅事件系统。...实例对象 ; 在 EventBus(EventBusBuilder builder) 构造函数中 , 初始化了一堆数据 ; /** * EventBus是Java和Android的中央发布/订阅事件系统
文章目录 一、导入依赖 二、注册 EventBus 三、发送 EventBus 事件 四、完整代码示例 五、源码地址 一、导入依赖 ---- 在 Module 下的 build.gradle 中导入 EventBus...依赖 ; implementation 'org.greenrobot:eventbus:3.2.0' 二、注册 EventBus ---- 在 onCreate 注册 EventBus ;...EventBus.getDefault().register(this); } 在 onDestory 中 取消注册 EventBus ; @Override...().post("Hello EventBus !")...().post("Hello EventBus !")
文章目录 一、EventBus 事件总线框架简介 二、EventBus 使用流程 一、EventBus 事件总线框架简介 ---- Android 中的事件传递机制 : 使用 Intent 在组件间传递信息...与 Service 之间的通信 ; EventBus GitHub 地址 : https://github.com/greenrobot/EventBus EventBus 文档 : https://...greenrobot.org/eventbus/documentation/ 二、EventBus 使用流程 ---- 参考 https://github.com/greenrobot/EventBus...导入 EventBus 依赖 ; implementation 'org.greenrobot:eventbus:3.2.0' 2 ....发送消息 ; 调用 EventBus.getDefault().post 方法 , 将消息发送到消息处理方法中 ; EventBus.getDefault().post("Hello EventBus
--- Table of Contents 系列文章目录 前言 一、为什么要用 Observer模式以及 EventBus 优点 ? 二、EventBus 使用步骤 1. 引入库 2....Observer模式也是 JDK 中自带就支持的,其在 1.0 版本就已经存在 Observer,不过随着 Java 版本的飞速升级,其使用方式一直没有变化,许多程序库提供了更加简单的实现,例如 Guava...EventBus、RxJava、EventBus 等 一、为什么要用 Observer模式以及 EventBus 优点 ?...首先创建一个 EventBus EventBus eventBus = new EventBus(); 2....注册到 EventBus 上并发布消息 EventBus eventBus = new EventBus(); eventBus.register(new EventListener()); eventBus.post
文章目录 一、EventBus 事件发送 二、事件发送 postSingleEvent 方法 一、EventBus 事件发送 ---- 在客户端的某个线程中 , 调用 EventBus.getDefault...().post("Hello EventBus !")...; 方法 , 向消息中心发送消息 ; 在 EventBus 中 , 获取 ThreadLocal 数据 PostingThreadState , 其中记录了 线程状态信息 , 其中维护了一个事件队列 List...方法源码 : /** * EventBus是Java和Android的中央发布/订阅事件系统。...*/ public class EventBus { private final ThreadLocal currentPostingThreadState
文章目录 一、取消订阅 二、取消订阅 unsubscribeByEventType 方法 一、取消订阅 ---- 【EventBus】EventBus 使用示例 ( 最简单的 EventBus 示例 )...示例中 , 在 MainActivity 中调用 // 取消注册 EventBus.getDefault().unregister(this); 方法 , 取消订阅 ;...取消订阅是以对象为单位的 , 一旦调用了 EventBus 的 unregister 方法 , 并传入 订阅者对象 , 则该订阅者对象中的所有 订阅方法 , 都会被 取消订阅 ; 在 【EventBus...】EventBus 源码解析 ( 注册订阅者总结 | 从封装的数据结构角度分析 EventBus ) 博客中 , 介绍到注册订阅者 , 是将 事件参数类型 和 订阅者信息 添加到 Map<Class<?...subscriptionsByEventType 集合中查找参数类型对应的 订阅者类 对应的订阅者方法 , 从上述集合中移除相应的 订阅者类及相关的订阅方法 , 即可完成 取消订阅的操作 ; public class EventBus
相关文章: 1、《EventBus使用详解(一)——初步使用EventBus》 2、《EventBus使用详解(二)——EventBus使用进阶》 一、概述 EventBus是一款针对Android优化的发布...首先,在EventBus中,获取实例的方法一般是采用EventBus.getInstance()来获取默认的EventBus实例,当然你也可以new一个又一个,个人感觉还是用默认的比较好,以防出错。...后面再添加EventBus相关的玩意。...android:layout_height="wrap_content" android:text="First Event"/> MainActivity.java...EventBus.getDefault().post(new FirstEvent("FirstEvent btn clicked")); 完整的SecondActivity.java的代码如下: package
方法源码 : public class EventBus { private final Map<Class<?...false; } } 二、事件发送 postToSubscription 方法 ---- 从 Subscription subscription 参数中 , 获取订阅方法的线程模式 , 根据 【EventBus...执行线程 ; 订阅方法 的执行 , 实际上是通过反射 , 调用订阅方法 , 并传入指定类型的事件作为参数 , 完成的 ; invokeSubscriber(subscription, event); EventBus.postToSubscription...方法源码 : public class EventBus { private void postToSubscription(Subscription subscription, Object...方法源码 : public class EventBus { void invokeSubscriber(Subscription subscription, Object event) {
文章目录 EventBus 注册订阅者流程梳理 EventBus 注册订阅者流程梳理 ---- EventBus 注册订阅者流程梳理 : ① 在 客户端 调用 EventBus.getDefault()....register() 方法 , 启动订阅者注册行为 ; 在该方法中先查找 订阅方法 集合 , 然后遍历并注册订阅方法 ; EventBus 注册订阅者 ② 查找 订阅方法 集合 , 在 findSubscriberMethods
前言 本文主要给大家讲述下本人使用EventBus的经验和体会。EventBus是一款针对Android的发布/订阅事件总线的开源框架。...2 什么是EventBus 本文的EventBus,是指greenrobot的 EventBus, 主要根据EventBus3.0 讲解; EventBus事件总线是指用于简化Android...onEvent( TestEvent testEvent ){ Log.e( "zy", ">>>> receiverEvent"); } 4 发送消息 所谓的消息发送消息就是把一个java...EventBus消息和EventBus的对象实例有关, 用一个EventBus对象发送的消息,必须是用同一个EventBus对象注册的才能收到消息; // 发送黏性消息 EventBus.getDefault...{ // 注解处理器 最终生成的java文件位置 eventBusIndex "com.zy.test.MyEventBusIndex" } } 5.2 初始化EventBus时,
最近正好在看 EventBus 的源码。那就正好今天来说说 EventBus 的那些事儿。 EventBus 是什么呢(相信地球人都知道→_→)?...EventBus.getDefault() 来看一下 EventBus.getDefault() 的源码(文件路径:org/greenrobot/eventbus/EventBus.java): private...> subscriberClass) 我们看下内部的源码(文件路径:org/greenrobot/eventbus/SubscriberMethodFinder.java): Listeventbus/meta/SubscriberInfoIndex.java)?...("import java.util.HashMap;\n"); writer.write("import java.util.Map;\n\n"); writer.write
使用方法 http://blog.csdn.net/harvic880925/article/details/40660137 1.构造函数 EventBus.getDefault()————...——单例模式 public static EventBus getDefault() { if (defaultInstance == null) { synchronized...(EventBus.class) { if (defaultInstance == null) { defaultInstance...= new EventBus(); } } } return defaultInstance; } 2....newElements); return true; } finally { lock.unlock(); } } Java
在同事的建议下学习了EventBus,在此做一下学习记录,侵权请告知一定及时删除。 EventBus概述 EventBus是针一款对Android的发布/订阅事件总线。...用法: (1)先定义一个类 public class MessageEvent { ....... } (2)在需要接收消息的页面注册事件(类似于动态注册广播) EventBus.getDefault...().register(this); (3)发送消息 EventBus.getDefault().post(new MessageEvent()); (4)处理消息( 在3.0之后,消息处理的方法可以随便取名...,当我们点击解除注册Unregist EventBus按钮的时候,再次点击Post Message也不会收到任何消息了。...尾语 学习到最后发现EventBus其实并不难,和我们之前用的广播很类似,同样需要注册和解除注册,处理消息的方法就类似于广播接收者的onReceive(),同样也可以选择粘性性质。
EventBus 使用总结 为什么要用EventBus?...EventBus是一个事件总线框架,观察者模式的变形,利用这个框架,我们可以方便高效地在Android组件间传递和处理数据,切换线程,降低代码耦合度。 本文基于 EventBus 3.0。 ?...* 观察者Java代码(以Activity为例) ? * 发送事件 ?...EventBus的进阶使用 线程模式 EventBus总共有四种线程模式: 1.ThreadMode.POSTING 这是缺省模式,onEvent会在发布事件的线程中运行,即发布事件和接收处理事件将会运行在同一个线程...这样配置之后,EventBus的效率就得到了提高,具体使用方法和之前相同。 使用EventBus后的代码混淆 使用EventBus后,代码混淆配置如下: ?
前言 相信大家已经非常熟练的使用EventBus了,简单的说EventBus是一个Android事件发布/订阅框架,通过解耦发布者和订阅者简化 Android 事件传递,是个典型的观察者模式,...本文源码基于EventBus3.0。...一、获取EventBus实例 EventBus.getDefault().register(this); 使用前我们要进行注册,EventBus.getDefault().register(this)...既然是单例模式为什么构造方法不是private而是public,这是因为EventBus可能有多条总线,订阅者注册到不同线上的 EventBus,通过不同的实例来发送数据,不同的 EventBus 是相互隔离开的...findState.clazz.getDeclaredMethods(); } catch (Throwable th) { // Workaround for java.lang.NoClassDefFoundError
github:https://github.com/greenrobot/EventBus/ compile 'org.greenrobot:eventbus:3.0.0' EventBus使用起来可以说是非常简单...再通知的话会出现接收不到消息的情况,虽然可以用postSticky,但是能避免的为什么不避免呢 @Override public void onCreate() { super.onStart(); EventBus.getDefault...().register(this); } @Override public void onDestory() { super.onStop(); EventBus.getDefault...().unregister(this); } 2.发布消息 只需要一行代码,非常简便 EventBus.getDefault().post("SecondActivity发起的通知"); 3.
看看代码-EventBus EventBus是一个非常有名的Android开源项目,能非常方便地对应用内消息进行分发和处理,因近期在看消息通道相关的东西,就看了下代码学习一下,项目地址:EventBus...使用方法 gradle项目中加入dependencies即可使用: dependencies { compile 'org.greenrobot:eventbus:3.1.1' } 在需要注册的地方使用...查看EventBus的源码,在EventBus.class中有几个比较重要的变量 eventTypesChahe : 存储Event.class相关的类,包括Event类的父类、以及其实现的接口类 subscriptionsByEventType...通过对订阅者和发布者的解耦,简化了消息发送和注册的流程,且消息主体可以为任意类的对象,使得消息虽然在EventBus中进行统一的分发和管理,但并不需要在同一地方集中注册和索引。...EventBus的代码量不多,算是一个比较轻量的框架,暂不支持跨进程的消息传递,且由于EventBus中维护的Subscriber引用都是强引用,没有及时unregister的话,可能会导致内存泄漏。
什么是EventBus 由greenrobot组织贡献(该组织还贡献了greenDAO),一个Android事件发布/订阅轻量级框架,功能:通过解耦发布者和订阅者简化Android事件传递,EventBus...如何使用 首先gradle中引入 compile 'org.greenrobot:eventbus:3.0.0' EventBus常用的有三个函数 1.注册事件,注册过的类能够接受EventBus...EventBus.getDefault().register(this); 2.取消注册 EventBus.getDefault().unregister(this); 3.发出消息,在任意一个活动或服务中调用该方法传递数据...,所有注册过事件的类都能收到消息,参数为object类型,在事件处理函数中强制转换 EventBus.getDefault().post("你好"); 4.事件处理函数,在注册过EventBus的类中用该函数处理...; 2.注册Eventbus,和之前一样 EventBus.getDefault().register(this); 3.处理消息,注意在注解参数中声明:sticky:true,表示该事件能够接受粘性事件
使用 注册订阅者 首先我们需要将我们希望订阅事件的类,通过EventBus类注册,注册代码如下: //3.0版本的注册 EventBus.getDefault().register(this); /.../2.x版本的注册 EventBus.getDefault().register(this); EventBus.getDefault().register(this, 100); EventBus.getDefault...EventBus EventBus.getDefault() 使用了双重检查的单例模式创建保证线程安全 public static EventBus getDefault() { if (defaultInstance...if (clazzName.startsWith("java.") || clazzName.startsWith("javax....methods = findState.clazz.getDeclaredMethods(); } catch (Throwable th) { // Workaround for java.lang.NoClassDefFoundError
最近在研究RxJava ,突然想起了事件分发另一个强大的框架Eventbus ,并且项目经常用到,特意整理了下。 what is Eventbus?...官方的解释为: EventBus is a publish/subscribe event bus optimized for Android....用法: 1.声明Event事件 public class MessageEvent { /* Additional fields if needed */ } 2.注册 eventBus.register...声明方法,有四种方法,最主要的是: @Subscribe public void onEventMainThread(CommonEvent event) { } 3.发布事件 eventBus.post...super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); EventBus.getDefault
领取专属 10元无门槛券
手把手带您无忧上云