美文网首页
RxJava笔记 Subject

RxJava笔记 Subject

作者: blossom_6694 | 来源:发表于2018-10-19 11:08 被阅读0次

一、AsyncSubject
Observer会接收AsyncSubject的onComplete()之前的最后一个数据。

 AsyncSubject<String> asyncSubject = AsyncSubject.create();

        asyncSubject.onNext("asyncSubject1");
        asyncSubject.onNext("asyncSubject2");
        asyncSubject.onComplete();

        asyncSubject.subscribe(s -> System.out.println("asyncSubject: " + s));

结果:

asyncSubject: asyncSubject2

二、BehaviorSubject
Observer会先接收到 BehaviorSubject被订阅之前的最后一个数据, 再接收订阅之后发射过 来的数据。

 BehaviorSubject<String> behaviorSubject = BehaviorSubject.create();
        behaviorSubject.onNext("behaviorSubject1");
        behaviorSubject.onNext("behaviorSubject2");

        behaviorSubject.subscribe(s -> System.out.println("behaviorSubject: " + s));

        behaviorSubject.onNext("behaviorSubject3");
        behaviorSubject.onNext("behaviorSubject4");
        behaviorSubject.onComplete();

结果:

behaviorSubject: behaviorSubject2
behaviorSubject: behaviorSubject3
behaviorSubject: behaviorSubject4

三、ReplaySubject
ReplaySubject 会发射所有来自原始 Observable 的数据 给观察者,无论它 们 是何时订阅的。

 ReplaySubject<String> replaySubject = ReplaySubject.create();
        replaySubject.onNext("replaySubject1");
        replaySubject.onNext("replaySubject2");

        replaySubject.subscribe(s -> System.out.println("replaySubject: " + s));

        replaySubject.onNext("replaySubject3");
        replaySubject.onNext("replaySubject4");
        replaySubject.onComplete();

结果:

replaySubject: replaySubject1
replaySubject: replaySubject2
replaySubject: replaySubject3
replaySubject: replaySubject4

四、PublishSubject
Observer 只接收 PublishSubject 被订阅之后发送的数据。

 PublishSubject<String> publishSubject = PublishSubject.create();
        publishSubject.onNext("publishSubject1");
        publishSubject.onNext("publishSubject2");

        publishSubject.subscribe(s -> System.out.println("publishSubject" + s));

        publishSubject.onNext("publishSubject3");
        publishSubject.onNext("publishSubject4");
        publishSubject.onComplete();

结果:

publishSubjectpublishSubject3
publishSubjectpublishSubject4

五、总结
AsyncSubject:不论订阅发生在什么时候,只发射最后一个数据。
BehaviorSubject:发送订阅之前的一个数据和订阅之后的全部数据。
ReplaySubject:不论订阅发生在什么时候,都发射全部数据。
PublishSubject:发送订阅之后全部数据。

相关文章

  • RxJava笔记 Subject

    一、AsyncSubjectObserver会接收AsyncSubject的onComplete()之前的最后一个...

  • 理解RxJava Subject --Publish, Repl

    这篇文章将围绕RxJava中的Subject来展开。 Publish Subject Replay Subject...

  • RxJava:Subject

    他是一个桥梁 A Subject is a sort of bridge or proxy that is ava...

  • RxJava学习笔记之Subject

    Subject在ReactiveX是作为observer和observerable的一个bridge或者proxy...

  • RxJava 的 Subject

    Subject 是一种特殊的存在 在前面一篇文章Cold Observable 和 Hot Observable中...

  • RxJava:Subject介绍

    这篇文章写的内容是从资料上复制下来的。应该是RxJava的官方资料翻译过来的文件,忘记原出处了。 Subject ...

  • RxJava的Subject

    Subject即可以是一个Observer也可以是一个Observerable,它是连接Observer和Obse...

  • Android RxBus的使用

    RxBus的核心功能是基于Rxjava的,在RxJava中有个Subject类,它继承Observable类,同时...

  • RxJava 第二篇 - Subject使用及示例

    本文介绍RxJava中Subject的使用。小白同学们看清楚并记好了,这里讲的是Subject,不是Subscri...

  • RxJava备忘资源

    1.给 Android 开发者的 RxJava 详解 2.RxJava中常见的几种Subject 3. RxJav...

网友评论

      本文标题:RxJava笔记 Subject

      本文链接:https://www.haomeiwen.com/subject/sikyzftx.html