文章目录
前言
- 前言
- 一、订阅类-订阅方法缓存集合
- 二、事件类型-订阅者集合
- 三、订阅对象-事件类型集合
首先声明几个数据结构 , 参考 【EventBus】EventBus 源码解析 ( 注册订阅者总结 | 从封装的数据结构角度分析 EventBus ) 博客 , 仿 EventBus , 设置几个重要的集合 ;
一、订阅类-订阅方法缓存集合METHOD_CACHE
作用仅用于作为订阅方法的缓存类 ,
- Key - 订阅类类型 ;
- Value - 订阅方法 MySubscriberMethod 的集合 ;
每个类可能会创建多个对象 , 当第一个对象注册后 , 就将该类类型与类中的订阅方法 , 都缓存到该 Map, CopyOnWriteArrayList> subscriptionsByEventType
;
- Key - 订阅者方法事件参数类型 ;
- Value - 封装 订阅者对象 与 订阅方法 的 MySubscription 集合 ;
在构造函数中初始化该集合 ;
CopyOnWriteArrayList 在写入数据时会拷贝一个副本 , 写完之后 , 将引用指向新的副本 , 该集合的线程安全级别很高 ;
该集合的重要作用就是进行消息转发 , 通过 post 传递进来一个消息对象 , 该消息对象的类型 就是 订阅者方法事件参数类型 , 通过调用 subscriptionsByEventType.get()
方法 , 可以获取到一个CopyOnWriteArrayList>
集合 , 该集合中的元素 MySubscription
对象就是 接收该类型消息的 订阅者对象 + 订阅方法 的封装类 ;
/**
* Key - 订阅者方法事件参数类型
* Value - 封装 订阅者对象 与 订阅方法 的 MySubscription 集合
* 在构造函数中初始化
* CopyOnWriteArrayList 在写入数据时会拷贝一个副本 ,
* 写完之后 , 将引用指向新的副本 ,
* 该集合的线程安全级别很高
*/
private final Map subscriptionsByEventType;
三、订阅对象-事件类型集合
订阅对象-事件类型集合 : Map
关注
打赏
热门博文
- 【Android Gradle 插件】Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件的扩展 | 自定义 Extension 扩展 )
- 【Android Gradle 插件】Gradle 构建生命周期 ③ ( BuildListener 构建监听器 | TaskExecutionGraphListener 任务执行图监听器 )
- 【Android Gradle 插件】Gradle 构建生命周期 ② ( Gradle 类的添加构建生命周期监听器函数 | Gradle#addListener 函数 )
- 【Android Gradle 插件】Gradle 构建生命周期 ① ( 分析构建脚本 | 执行初始化配置 | 执行 Gradle 任务 | Project#beforeEvaluate 函数 )
- 【Android Gradle 插件】自定义 Gradle 任务 ⑨ ( 控制 Gradle 执行任务顺序 | Task#finalizedBy 函数 | 控制 Gradle 执行任务顺序示例分析 )
- 【Android Gradle 插件】自定义 Gradle 任务 ⑧ ( 控制 Gradle 执行任务顺序 | Task#shouldRunAfter 函数 | 三个函数使用场景对比 )
- 【Android Gradle 插件】自定义 Gradle 任务 ⑦ ( 控制 Gradle 执行任务顺序 | Task#dependsOn 函数 | Task#mustRunAfter 函数 )
- 【数学分析】集合 ① ( 集合概念 | 集合表示 | 常用的数集合 | 集合的表示 )
- 【数学分析】学科简介 ( 初等数学缺陷 | 微分与积分 | 学习数学分析的目的 | 数学分析与高等数学对比 )
- 【Android Gradle 插件】自定义 Gradle 任务 ③ ( Gradle 自定义任务创建方法 Project#task 函数 | Task#doFirst 函数用法 )