1.EventBus简介
EventBus主要功能是替代Intent、Handler、BroadCast在Fragment、Activity、Service、线程之间传递消息的通信库。优点是开销小,代码简洁,解耦代码。EventBus是一个观察者模式的实现,所以它具有以下三个要素:
- Event:事件,可以使任意类型对象。
- Subscriber:事件订阅者,接收特定的事件。
- Publisher:事件发布者,用于通知Subscriber有事件发生。
官方的图可以很好的说明EventBus的架构:
2.用RxJava实现EventBus
public class RxBus {
public static synchronized RxBus get() {
return RxBusGenerator.instance;
}
private static class RxBusGenerator {
private static RxBus instance = new RxBus();
}
private RxBus() {
}
private ConcurrentHashMap<Object, Vector<Subject>> subjectMapper = new ConcurrentHashMap<>();
public <T> Observable<T> register(@NonNull Class<T> clazz) {
return register(clazz.ge