RxJava学习(1)-Subject

前言

根据Froussios英文版的学习笔记,这里是简单的学习笔记。如果对于subject的文档看不懂,可以进入这里,有很棒的图解。

一、简介

Subject是Observable的扩展,同时实现了Observer的接口,所以它既可以发送数据,也可以接收数据。

一、PublishSubject

PublishSubject只有在订阅后,才会开始接收数据。
RxJava学习(1)-Subject_第1张图片

二、ReplaySubject

ReplaySubject会接收所有数据,无论何时订阅的。
RxJava学习(1)-Subject_第2张图片

1. createWithSize:限制缓存的大小

RxJava学习(1)-Subject_第3张图片

2. createWithTime:限制缓存时间,超过这个时间的数据,将会被丢掉
RxJava学习(1)-Subject_第4张图片

3. createWithTimeAndSize结合以上。

三、 BehaviorSubject

  1. 会接收订阅前的最后一个数据,相当于createWithSize(1)的效果。
    RxJava学习(1)-Subject_第5张图片
  2. BehaviorSubject也支持在创建的时候,有一个初始默认值,将会作为第一个被接收的数据。
    RxJava学习(1)-Subject_第6张图片

四、AsyncSubject

将会接收订阅前的最后一个数据,但是它在流complete之前,不会发射任何数据!!!它的用途是发射一个值并且立即完成。
RxJava学习(1)-Subject_第7张图片

后记

所有的流都是在complete或者error之后,不会再发射任何数据,Subject也不例外。

你可能感兴趣的:(RxJava学习(1)-Subject)