不再分析了,理解了LiveData后,不难理解这个框架。
阅读本文前,请先阅读[《Jetpack之LiveData源码分析》](/源码分析系列/LiveEventBus源码分析.md)。因为LiveEventBus是基于LiveData构建的。
源码地址:LiveEventBus
典型用法如下:
1 | // 监听消息 |
1 | // 发送消息 |
其实,这三个方法就是最核心的,get、observe和post。通过get获取一个Observable对象,通过observe进行监听,通过post发送消息。我们就从这三个方法入手去分析其源码。
get方法分析
跟踪get方法,不难发现,是由LiveEventBusCore单例提供的with()方法返回的Observable,LiveEventBusCore中有一个名为bus的Map<String, LiveEvent
主要代码如下:
##LiveEvent
1 | private class LiveEvent<T> implements Observable<T> { |
LiveEvent中通过一个成员变量Map<Observer, ObserverWrapper<T>> observerMap
来存储ObserverWrapper。
ObserverWrapper是LiveData库中的Observer类的子类,
本文采用CC-BY-SA-3.0协议,转载请注明出处
Author: boybeak
Author: boybeak