RxJava(RxAndroid)Subject学习
2016-09-22 17:52
393 查看
本文主要内容出自:
http://reactivex.io/documentation/subject.html
Subject是一种bridge和proxy,它既是Observable又是Observer。从Subject类定义就可以看出这一点,如下:
BehaviorSubject
PublishSubject
ReplaySubject
AsyncSubject:只会响应subject.subscribe(observer)之后最近发送的事件,即只会接收一个事件;如果发生错误,则只接受错误事件。
BehaviorSubject:只会响应subject.subscribe(observer)调用时之前最近的一个事件和之后Observable发送的所有事件;如果发生错误,则只接受错误事件。
例子:
PublishSubject:响应subject.subscribe(observer)调用之后的所有事件;如果发生错误,则只接受错误事件。
ReplaySubject:则会接收Observable发出的所有事件。
http://reactivex.io/documentation/subject.html
Subject是一种bridge和proxy,它既是Observable又是Observer。从Subject类定义就可以看出这一点,如下:
public abstract class Subject<T, R> extends Observable<R> implements Observer<T>{...}
Subject分类:
AsyncSubjectBehaviorSubject
PublishSubject
ReplaySubject
AsyncSubject:只会响应subject.subscribe(observer)之后最近发送的事件,即只会接收一个事件;如果发生错误,则只接受错误事件。
BehaviorSubject:只会响应subject.subscribe(observer)调用时之前最近的一个事件和之后Observable发送的所有事件;如果发生错误,则只接受错误事件。
例子:
// 接收所有事件. BehaviorSubject<Object> subject = BehaviorSubject.create("default"); subject.subscribe(observer); subject.onNext("one"); subject.onNext("two"); subject.onNext("three"); // 只接收事件 "one", "two" and "three" events, 而没有事件 "zero" BehaviorSubject<Object> subject = BehaviorSubject.create("default"); subject.onNext("zero"); subject.onNext("one"); subject.subscribe(observer); subject.onNext("two"); subject.onNext("three"); // 只接收onCompleted事件 BehaviorSubject<Object> subject = BehaviorSubject.create("default"); subject.onNext("zero"); subject.onNext("one"); subject.onCompleted(); subject.subscribe(observer); // 只接收 onError事件 BehaviorSubject<Object> subject = BehaviorSubject.create("default"); subject.onNext("zero"); subject.onNext("one"); subject.onError(new RuntimeException("error")); subject.subscribe(observer);
PublishSubject:响应subject.subscribe(observer)调用之后的所有事件;如果发生错误,则只接受错误事件。
ReplaySubject:则会接收Observable发出的所有事件。
相关文章推荐
- RxJava与RxAndroid学习记录
- RxJava与RxAndroid学习博文整理
- RxAndroid从零开始学习之一(RxJava的简单Demo)
- RxJava和RxAndroid专题学习
- RxJava(RxAndroid)学习资料
- RxJava&RxAndroid学习
- 学习--RxJava 和 RxAndroid 四(RxBinding的使用)
- rxJava rxandroid 学习
- RxJava与RxAndroid的学习之路
- RxJava&&RxAndroid学习地址备忘
- RxJava学习第一篇:RxJava和RxAndroid的关系
- RxJava或RxAndroid 学习资料整理
- 基于RxJava、RxAndroid的EventBus实现
- RxJava 和 RxAndroid
- Android开发学习之路--RxAndroid之初体验
- Android开发学习之路--RxAndroid之初体验
- RxAndroid和RxJava的资料分享
- Android开发学习之路--RxAndroid之操作符
- [Android]基于RxJava、RxAndroid的EventBus实现
- 51.Rxjava+RxAndroid+Retrofit组合问题