RxJava是什么?
原文是这样描述的:
RxJava is a Java VM implementation of Reactive Extensions: a library for composing asynchronous and event-based programs by using observable sequences.
翻译过来就是一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库。
它是观察者模式的一个变种,既然是基于事件的,当然EventBus的东东它都可以实现。
下面就来说说几种常用的Subject(既是观察者又是被观察对象)
从下图可以看出它的子类有PublishSubject、BehaviorSubject、ReplaySubject、AsyncSubject、SerializedSubject。
PublishSubject
Subject that, once an Observer has subscribed, emits all subsequently observed items to the subscriber.
PublishSubject算是RxJava中最常用的Subject,一旦一个观察者订阅了该Subject,它会发送所有数据给订阅者。
什么意思?看图就明白了。
也就是说订阅者只会接受订阅之后的来自PublishSubject发射的数据。
Example Code
PublishSubject<Object> subject = PublishSubject.create();
// observer1 will receive all onNext and onCompleted events
subject.subscribe(observer1);
subject.onNext("one");
subject.onNext("two");