RxJava之Observables类型理解

RxJava之Observables类型理解_第1张图片
RxJava Observables

Observable — Operator — Observer

Observable就像一个发声的扬声器。它会执行一些任务并发射(emit)一些值。
Operator就像一个翻译机,将数据从一种形式翻译或者修改为另一种形式。
Observer获得这些值。

RxJava之Observables类型理解_第2张图片

RxJava中的Observables类型

以下即为RxJava中不同的Observables类型

  • Observable
  • Flowable
  • Single
  • Maybe
  • Completable

既然有不同的Observables类型,随之也有不同的Observers类型。如下:

  • Obeserver
  • SingleObserver
  • MaybeObserver
  • CompletableObserver

现在就让我们来看看他们之间的区别和如何选择。

Observable <> Observer

此为最简单的Observable,可以发射不止一个值。
举个栗子:比方说你正在下载一个文件,报告当前的下载进度。此时将会发射不止一个值。

创建一个简单的Observable

RxJava之Observables类型理解_第3张图片

对应的Observer

RxJava之Observables类型理解_第4张图片

Flowable <> Observer

Flowable 用于当Obserable发射很多的值时而Observer消费不过来的时候。
这种情况下,Observable需要基于某种策略忽略一些值,否则将会抛出异常。
Flowable Observable会通过某种策略来处理异常。
这个策略为BackPressureStrategy,异常为MissingBackPressureException

创建一个Flowable Observable

与创建一个普通的Observable类似,你可以使用Flowable.create()来创建一个Flowable。

对应Flowable Observable的Observer

与普通的Observer基本一样。

Single <> SingleObserver

SIngle用于当Observable只需要发射一次值,比如网络请求的响应的时候。

创建一个Single Observable

RxJava之Observables类型理解_第5张图片

对应Single Observable的SingleObserver

RxJava之Observables类型理解_第6张图片

Maybe <> MaybeObserver

Maybe 用于当Observable发射一个值或没有值的时候。

创建一个 Maybe Observable

RxJava之Observables类型理解_第7张图片

对应Maybe Observable的MaybeObserver

RxJava之Observables类型理解_第8张图片

Completable <> CompletableObserver

Completable 用于Observable完成某个任务而不发射任何值得时候。

创建一个 Completable Observable

RxJava之Observables类型理解_第9张图片

对应Completable Observable的CompletableObserver

RxJava之Observables类型理解_第10张图片

好啦,现在你该知道如何根据你的场景来选择哪一个Observable啦吧。

RxJava之Observables类型理解_第11张图片

完整的Rxjava教程

RxJava是关于Reactive Extensions的java 虚拟机实现,它已成为Android开发的一项最重要的技能。
翻译自Understanding Types Of Observables In RxJava

你可能感兴趣的:(RxJava之Observables类型理解)