首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EventBusEventBus 源码解析 ( EventBus 构建 | EventBus 单例获取 | EventBus 构造函数 | EventBus 构建者 )

文章目录 一、EventBus 单例获取 二、EventBus 构造函数 三、EventBus 构建者 一、EventBus 单例获取 ---- 在 EventBus 中 , 不论是进行注册 , 取消注册..., 还是发送信息 , 都需要调用 EventBus.getDefault() , 获取一个 EventBus 的实例对象 , 这个实例对象是 单例对象 ; 在 EventBus.getDefault(...前 , 突然在其它线程中创建了 EventBus 并且注册了订阅者 , 新创建的 EventBus 实例对象肯定会覆盖旧的 EventBus , 但是旧的 EventBus 中的订阅者就彻底消失了 ;...双重加锁校验 可以保证 EventBus 实例对象 全局 全时间线 唯一 ; /** * EventBusJava和Android的中央发布/订阅事件系统。...实例对象 ; 在 EventBus(EventBusBuilder builder) 构造函数中 , 初始化了一堆数据 ; /** * EventBusJava和Android的中央发布/订阅事件系统

67910
您找到你想要的搜索结果了吗?
是的
没有找到

EventBusEventBus 源码解析 ( 取消订阅 )

文章目录 一、取消订阅 二、取消订阅 unsubscribeByEventType 方法 一、取消订阅 ---- 【EventBusEventBus 使用示例 ( 最简单的 EventBus 示例 )...示例中 , 在 MainActivity 中调用 // 取消注册 EventBus.getDefault().unregister(this); 方法 , 取消订阅 ;...取消订阅是以对象为单位的 , 一旦调用了 EventBus 的 unregister 方法 , 并传入 订阅者对象 , 则该订阅者对象中的所有 订阅方法 , 都会被 取消订阅 ; 在 【EventBus...】EventBus 源码解析 ( 注册订阅者总结 | 从封装的数据结构角度分析 EventBus ) 博客中 , 介绍到注册订阅者 , 是将 事件参数类型 和 订阅者信息 添加到 Map<Class<?...subscriptionsByEventType 集合中查找参数类型对应的 订阅者类 对应的订阅者方法 , 从上述集合中移除相应的 订阅者类及相关的订阅方法 , 即可完成 取消订阅的操作 ; public class EventBus

47910

EventBus使用详解

在同事的建议下学习了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(),同样也可以选择粘性性质。

1.4K50

看看代码-EventBus

看看代码-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的话,可能会导致内存泄漏。

55460

EventBus轻松使用

什么是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,表示该事件能够接受粘性事件

60120
领券