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");

本文介绍了RxJava中的五种Subject类型:PublishSubject、BehaviorSubject、ReplaySubject、AsyncSubject和SerializedSubject。PublishSubject只发布订阅后的数据,BehaviorSubject发送最近的值,ReplaySubject缓存所有数据,AsyncSubject仅发送最后一个数据,而SerializedSubject确保线程安全。每个Subject都有相应的示例代码说明其工作原理和应用场景。
最低0.47元/天 解锁文章
877

被折叠的 条评论
为什么被折叠?



