/**
* PublishSubject只会把在订阅发生的时间点之后来自原始Observable的数据发射给观察者。
* 需要注意的是,PublishSubject可能会一创建完成就立刻开始发射数据(除非你可以阻止它发生),
* 因此这里有一个风险:在Subject被创建后到有观察者订阅它之前这个时间段内,一个或多个数据可能会丢失。
* 如果要确保来自原始Observable的所有数据都被分发:
* 1.使用Create创建那个Observable以便手动给它引入"冷"Observable的行为(当所有观察者都已经订阅时才开始发射数据)
* 2.改用ReplaySubject。
*
* 如果原始的Observable因为发生了一个错误而终止,PublishSubject将不会发射任何数据,只是简单的向前传递这个错误通知。
*/
private void doSomeWork() {
PublishSubject<Integer> source = PublishSubject.create();
source.subscribe(getFirstObserver()); // it will get 1, 2, 3, 4 and onComplete
source.onNext(1);
source.onNext(2);
source.onNext(3);
/*
* it will emit 4 and onComplete for second observer also.
*/
source.subscribe(getSecondObserver());
source.onNext(4);
source.onComplete();
}
PublishSubjectExampleActivity.java 文件源码
java
阅读 40
收藏 0
点赞 0
评论 0
项目:RxJava2-Android-Sample
作者:
评论列表
文章目录