Flowable API 详解
时间: 2023-12-20 19:02:03 浏览: 93
Flowable初体验
Flowable是RxJava2的一个子集,它提供了一些额外的方法和特性来处理背压问题,可以处理大量数据和高负载的场景。下面是Flowable API的详解:
1. 创建Flowable对象
- Flowable.just(item1, item2, item3, ...):创建一个发射固定数据项的Flowable对象。
- Flowable.fromArray(items):创建一个发射数组中所有数据项的Flowable对象。
- Flowable.fromCallable(callable):创建一个发射Callable返回值的Flowable对象。
- Flowable.fromPublisher(publisher):将一个Publisher对象转换为一个Flowable对象。
- Flowable.fromIterable(iterable):创建一个发射Iterable中所有数据项的Flowable对象。
2. 变换Flowable对象
- map(function):对发射的每个数据项应用一个函数,返回一个新的Flowable对象。
- flatMap(function):对发射的每个数据项应用一个函数,返回一个新的Flowable对象,将所有的Flowable对象发射的数据项合并成一个Flowable对象。
- concatMap(function):类似于flatMap,但是保证顺序,依次处理每个数据项,不会交叉处理。
- switchMap(function):类似于flatMap,但是只处理最新的数据项,忽略旧的数据项。
3. 过滤Flowable对象
- filter(predicate):筛选出发射的数据项中满足条件的数据项。
- distinct():去除重复的数据项。
- take(count):仅发射前count个数据项。
- skip(count):跳过前count个数据项。
- takeWhile(predicate):仅发射满足条件的数据项,直到不满足条件为止。
- skipWhile(predicate):跳过满足条件的数据项,直到不满足条件为止。
4. 操作Flowable对象
- doOnNext(action):在每个数据项发射之前执行一个操作。
- doOnComplete(action):在完成时执行一个操作。
- doOnError(action):在发生错误时执行一个操作。
- onErrorResumeNext(function):当发生错误时,返回一个新的Flowable对象来继续发射数据项。
- onErrorReturnItem(item):当发生错误时,返回一个指定的数据项来终止发射数据项。
5. 处理背压问题
- onBackpressureBuffer():缓存所有发射的数据项,如果缓存区已满,则抛出MissingBackpressureException异常。
- onBackpressureDrop():丢弃所有发射的数据项,如果缓存区已满,则不会抛出异常。
- onBackpressureLatest():仅缓存最新的数据项,如果缓存区已满,则覆盖最老的数据项。
以上仅列举了部分Flowable API,还有很多其他的方法和特性可以根据实际需求进行选择和使用。
阅读全文