EvenBus 用的原理很简单 就是 java 的反射。
1. 扫描注册的类,获取有标记的方法,方法参数(Even),及标记(Annotation)里面的内容等相关 的一些信息,保存在内存变量里面。
2. 在调用Post的时候 ,遍历刚刚 扫描到的方法 根据 Post 的参数(Even) 获取 相应要执行的方法列表。
3. 获取到方法后 调用 Method.invoke();
大致 思路就是这样子。
原理图:
根据这个原来 简单的 实现了 EvenBus,仅通过注解方式。
我们来看看 我的类构成结构:
annotation 是标记的注解
distribute 是事件分发处理 包括同步分发 和 异步分发
reflect 是反射的处理 获取标记的方法,执行反射方法。
EventBus 处理主类
EventBus 是一个单列 ,保证 一个工程里面只有一个实例。
下一章节 说说具体的实现。