本文主要是介绍Rx部分笔记(源自Rx官网),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Rx被用于生成异步数据的流程和序列
Observable像推送,订阅者被动接收消息
Iterable像拉取,订阅者主动拉取消息
将异步调用本身定义为 Observable。
对 onNext 的调用通常称为项目的“emissions”,而对 onComplete 和 onError 的调用称为“notifications”。
unsubscription并不能保证立即取消订阅,即使没有subscriber,observable仍有可能在一段时间内生成并尝试发射items
Observable类型:
ColdObservable:直到有Observer订阅它才会开始发射
HotObservable:创建后立即开始发射,不管有没有被订阅
ConnectableObservable:其connect方法被调用后才会开始发射,与是否被订阅无关
链式操作
##Observable Contract##
其实dispose就是退订
对于同一个Observable的多个Observer,后来订阅的Observer可能收到以前所有的item,可能只收到此后的item,也可能收到跟前面的Observer完全不一样的item序列,这都由Observable决定
背压:如果一个Observable支持背压并且订阅它的Observer使用了背压,Observable不会在订阅后立即开始发出item,而是先发出onSubscribe通知。
Observer收到onSubscribe通知后可以发出request通知给Observable,请求一定数量的item。若该Observable不支持背压会直接发出onError通知去响应请求
Observable自己定义策略去处理过量的item,丢弃、保留等等
操作符分类
##创建Observable##
**以下在rxjava3中均为静态方法,除了repeat**
Create:传入你自定义的ObservableSource,每有一个Observer订阅都会走一遍subscribe(一般是相同的逻辑),所以一般每个Observer会收到相同的item序列。每个Observer的emitter不一样
惰性计算,订阅之后才会调用代理函数,而且是最新item; just, from 方法发出的都是创建Observable时候的item
defer:每有一个observer,都会用你指定的工厂函数为其生成一个新的Observable并让该observer订阅它。
Empty/Never/Throw:不发送任何item,分别是 正常终止(onCompleted)/永不终止也不发出/异常终止(onError),一般作为测试用。
just:只发送作为参数的一个item(object),可以发送null。
from:传递数组、Iterable、Future、Action、Callable、Runnable等作为参数,转换为Observable,订阅后依次拉取并传递item。
interval:通过给定的时间间隔创建一个Observable,每经过给定的时间间隔发送从0开始的递增的整数;可以用来替代计时器。未指定首次延迟是订阅前开始计算延迟;指定首次延迟是订阅后计算延迟并发出
range:发出给定范围内的连续整数。若数量参数传入0则不发出item,若传入负数则会抛出异常
start:将参数函数的返回值作为item发出。其实就是from里的那些方法
timer:根据给定延迟发出单个item,订阅后开始计算延迟
这篇关于Rx部分笔记(源自Rx官网)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!