首先分别定义这两个请求接口: 接着用Zip来打包请求:
Zip操作符将多个Observable发射的数据按顺序组合起来,每个数据只能组合一次,而且都是有序的。最终组合的数据的数量由发射数据最少的Observable来决定。 image 2.Merege Merge操作符将多个Observable发射的数据整合起来发射,就如同是一个Observable发射的数据一样。但是其发射的数据有可能是交错的,如果想要没有交错,可以使用...
代码code 3.1看起来没什么问题,两个流并发执行,最后用zip等待他们的结果。但是却隐藏了一个很重要的问题:RxJava默认是同步、阻塞的!!当我们想去仿照上面的方式并发发送多个请求,最后用zip监听所有结果时,很容易发先一个诡异的现象, code 3.2的代码中,ob2的代码总是在ob1执行之后才会执行,并不是我们预期的两个请...
zipWith 配合 startWith 可以同时拿到点赞状态改变前后的信息,然后只有在点赞状态改变时才上报 zipWith 配合 skip 可以实现双击判断 操作符实现思路 ObservableXXX 的构造方法会把上层 Observable 保存到 source 变量中 ObservableXXX 的 subscribeActual 一般会生成一个内部的 Observer,用来订阅上层 Observable,并代理 Obs...
2.zip 根据的宝石图,可以知道zip操作符的作用是把多个源发射的item通过特定函数组合在一起,然后发射组合后的item。从图中还可以看到一个重要的信息是,最终发射的item是对上面的两个源发射的item按照发射顺序逐个组合的结果,而且最终发射的等item的发射时间是由组合它的和等item中发射时间较晚的那个item决定的,也正...
内存泄漏是常见问题。CompositeDisposable集中管理订阅关系,在Activity销毁时调用clear()方法及时取消订阅。配合AndroidLifecycle组件,能自动处理生命周期关联的订阅。原理层面,RxJava通过观察者模式实现数据推送。订阅时,Observer被包装成Subscriber,Observable通过subscribeActual建立订阅关系。事件传递时,每个操作符都会创建新的...
zip:使用一个函数组合多个Observable发射的数据集合,然后再发射这个结果 combineLatest 变换:map/flatMap/cast/flatMapIterable/groupBy 聚合:reduce/collect/count/countLong 转换:toList/toSortedList/toMap/toMultiMap 错误处理/重试机制:onErrorResumeNext/onExceptionResumeNext/onErrorReturn/retry/retryWhen… ...
组合操作And/Then/When, CombineLatest, Join, Merge, StartWith, Switch, Zip 错误处理Catch和Retry 辅助操作Delay, Do, Materialize/Dematerialize, ObserveOn, Serialize, Subscribe, SubscribeOn, TimeInterval, Timeout, Timestamp, Using 条件和布尔操作All, Amb, Contains, DefaultIfEmpty, SequenceEqual, SkipUntil...
这里我主要讲RxJava的一些基本用法,基本案例,原理的话暂时不深究: 一、自己构造事件 Observable.create(newObservableOnSubscribe<Integer>() { @Overridepublicvoidsubscribe(ObservableEmitter emitter) {inti =getNumber();if(i < 0) { emitter.onComplete();return; ...