RxJava基本概念

RxJava的概述:

RxJava是ReactiveX的一种Java实现。

ReactiveX是Reactive Extensions的缩写,一般简写为Rx。微软给出的定义是,Rx是一个函数库,让开发者可以利用可观察序列和LINQ(Language Integrated Query)风格查询操作符来编写异步和基于事件的程序。开发者可以用Observables表示异步数据流,用LINQ操作符查询异步数据流,用Schedulers参数化异步数据流并发处理,Rx可以这样定义:Rx=Observables+LINQ+Schedulers。

RxJava的特点:

RxJava称为异步操作,我们还会想到Android的AsyncTask和Handler。但是随着求情数量越来越多,代码逻辑越来越复杂,这时RxJava依旧能保持清醒的逻辑,RxJava的原理就是创建一个Observable对象来干活,然后使用各种操作符建立起来链式操作,就如同流水线一样,把你想要处理的数据一步一步地加工你想要的成品,之后发射给Subscriber处理。

观察者和被观察者:

RxJava的异步操作是通过扩展观察者模式来实现的。

在RxJava中,Observable代表了被观察者,Observer代表了观察者,在RxJava3.x中有一下几个被观察者:

  • Observable:发送0个或N个数据,不支持背压
  • Flowable:发送0个或N个数据,支持背压,它是在RxJava2之后才有的类型。
  • Single:只处理onSuccess和onError事件,只能发送单个数据或发送一个错误。
  • Completable:Completable在创建后,不会发射任何数据,只处理onComplete和onError事件
  • Maybe:能够发射0个或1个数据,它是在RxJava2后才有的类型。

背压:

背压的概念和观察者模式有关联。

背压指的是,在异步场景中,被观察者发送事件的速度远快于观察者处理事件速度的情况下,一种告知上游被观察者降低发送速度的策略。

从RxJava2开始。Observable不再支持背压,而是新增了Flowable支持背压。Flowable中的操作符和Observable类似,其他所有操作符均强制支持背压。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值