# MyEventBus **Repository Path**: mapleSeriesX/MyEventBus ## Basic Information - **Project Name**: MyEventBus - **Description**: 事件发布-订阅总线 - **Primary Language**: Android - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-07-13 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MyEventBus #### 介绍 EventBus 是一款在 Android 开发中使用的发布/订阅事件总线框架,基于观察者模式,将事件的接收者和发送者分离, 避免复杂且容易出错的依赖关系和生命周期问题,简化了组件之间的通信,使用简单、效率高、体积小! #### 软件架构 ![EventBus 原理图](eventbus.png) ##### 工作流程: 1. 单例模式:DCL + volatile,大幅降低synchronized带来的性能开销的同时阻止重排序和保证线程间的可见性。 2. 用户注册的时候传递使用EventBus的类,保存该类与该类下所有的非系统方法中包含自定义注解的函数在缓存map集合里。 3. 用户使用事件传递的时候,遍历缓存map集合,判断传递的类型,命中后判断是否需要线程切换,然后反射调用注解的函数。 4. 用户取消注册的时候传递使用EventBus的类,在缓存map集合中移除该项。