RxJava学习资料及操作符总览

来源:互联网 发布:php用什么软件开发 编辑:程序博客网 时间:2024/06/08 20:01

概述

RxJava是一个基于观察者模式设计的异步库(响应式编程),是ReactiveX的Java版本实现。

学习资料:

  • 给 Android 开发者的 RxJava 详解
    ——扔物线
    文章配套Samples:RxJavaSamples

  • 系列博客:
    深入浅出RxJava(一:基础篇)
    深入浅出RxJava ( 二:操作符 )
    深入浅出RxJava ( 三–响应式的好处 )
    深入浅出RxJava ( 四-在Android中使用响应式编程 )
    ——hi大头鬼hi

  • RxJava使用场景小结
    ——THEONE10211024

  • RxJava使用场景小结
    ——hi大头鬼hi

  • RxJava-Android-Samples
    ——kaushikgopal

  • 开发技术前线:
    NotRxJava懒人专用指南 :从代码的角度还原RxJava库的实现原理
    ——作者:Yaroslav Heriatovych 译者:Rocko

  • ReactiveX中文翻译文档:操作符介绍

  • 那些年我们错过的响应式编程
    ——很详细的介绍什么是响应式编程

  • 使用RxJava.Observable取代AsyncTask和AsyncTaskLoader
    ——通过比较介绍RxJava在异步处理上的优势

  • RxJava部分操作符介绍
    ——水木川博客

  • Awesome-RxJava :RxJava资源的总结分享
    ——hi大头鬼hi

  • Android开发者们一定会喜欢的 RxJava.pdf: hi大头鬼hi的rxjava讲义pdf

大纲之操作符分类

创建操作

  • Just : 将一个或多个对象<T>转换一个Observable,一次性发射出去
  • From : 将一个Iterable<T>, 一个Future<T>, 或者一个数组T[]转换成一个Observable,一次性发射出去
  • Repeat(repeatWhen): 重复发射指定数据或数据序列的Observable,repeatWhen用于指定重发条件
  • Create: 创建一个新的Observable
  • Defer: 当订阅者订阅才创建的Observable;每次都是全新的数据
  • Range: 发射指定范围的整数序列的Observable
  • Interval: 给定的时间间隔发射整数序列的Observable
  • Empty/Never/Throw: 直接通知完成/什么都不做/直接通知错误 的Observable
  • Timer: 在给定的延时之后发射单个数据的Observable

变换操作

  • Map: 对序列的每一项都应用一个函数来变换,由Observable<A> --> Observable<B>
  • FlatMap(concatMap,flatMapIterable): 将Observable发射的数据集合变换为Observables集合,由Observable<A> --> Observable<Observable<B>>
  • SwitchMap: 和FlatMap不同的是它只发射最近的数据,丢弃之前的数据, 常用于解决显示与数据不同步的问题
  • Buffer: 定期从Observable收集数据到一个集合,然后一次性发射
  • GroupBy: 将Observable数据进行分组发射
  • Scan: 对Observable发射的每一项数据应用一个函数,然后按顺序依次发射每一个值
  • Window: 将Observable的数据分拆成一些Observable窗口,一次性发射出去
  • Cast: 在发射之前将Observable发射的所有数据进行强制转换

过滤操作

  • Filter(ofType): 通过一个Func来过滤数据,ofType用于指定class类型
  • Take(TakeLast,takeLastBuffer):只发射开始的N项数据,其中TakeLast只发射最后的N项数据,其中takeLastBuffer将最后的N项数据当做单个数据发射
  • Skip(SkipLast):跳过开始的N项数据,其中SkipLast跳过最后的N项数据
  • Last(lastOrDefault):只发射最后的一项数据,其中lastOrDefault只发射最后的一项数据,如果Observable为空就发射默认值
  • First(takeFirst,firstOrDefault):只发射第一项数据,其中firstOrDefault允许空值时发射默认值
  • ElementAt(elementAtOrDefault):发射第N项数据,elementAtOrDefault允许默认值
  • Sample(sample,throttleLast):定期发射Observable最近的数据,和ThrottleFirst相反
  • ThrottleFirst: 定期发射这个时间段里源Observable发射的第一个数据,常用于Button的去重发点击
  • Distinct(distinctUntilChanged): 过滤掉重复数据,其中distinctUntilChanged用于过滤连续重复的数据
  • IgnoreElements: 丢弃所有的正常数据,只发射错误或完成通知

组合操作

  • StartWith: 在数据序列的开头增加一项数据,可接受一个Iterable或者多个Observable作为函数的参数。
  • Merge(mergeDelayError): 将多个Observable合并,mergeDelayError让onError发生在数据合并并发射完成之后
  • Zip(zip,zipwith):组合多个Observable,然后再发射
  • And/Then/When: rxjava-joins 包中的内容,通过模式和计划组合多个Observables
  • CombineLatest: 当两个Observables中的任何一个发射了一个数据时,通过一个指定的函数组合每个Observable发射的最新数据(一共两个数据),然后发射这个函数的结果,常用语登录;注册等场景下
  • Join(join/groupJoin): 某个Observable在自己的时间窗口内都有有效的,就会拿来组合。
  • Switch(switchOnNext): 将一个发射Observables的Observable转换成另一个Observable,并发射最近发射的数据

错误处理

  • Catch: 包括OnErrorReturn,OnErrorResume和OnExceptionResumeNext
  • Retry: 包括etry(long) 和 retryWhen,其中retry返回布尔值,retryWhen触发onError后开始重试

辅助操作

  • Materialize/Dematerialize:将OnNext/OnError/OnComplete都转化为一个Notification对象并按照原来的顺序发射出来,Dematerialize则相反
  • Timestamp/TimeInterval:给Observable发射的每个数据项添加一个时间戳,TimeInterval定期发射数据
  • ObserveOn/SubscribeOn/Subscribe:线程切换和订阅操作
  • Delay(delay,delaySubscription):延时发射,其中delaySubscription是延时注册
  • Using: 创建一个只在Observable生命周期存在的资源
  • Single: 返回单个数据
  • Timeout: 给Observable加上超时时间
  • Do: 类似生命周期方法,在Rx执行的各个阶段添加监听,包括DoOnNext,DoOnComplete等
  • To: 将Observable转换为另一个对象或数据结构,包括toList,toFuture等实现
  • Serialize: 强制Observable按次序发射数据
  • cache(replay): 记住Observable发射的数据序列并发射相同的数据序列给后续的订阅者

算术聚合连接及自定义操作

其中自定义操作,主要依靠compose及lift操作

0 0