首页 > 解决方案 > Rxjava 大号 迭代然后跳过记录

问题描述

我被困在我当前项目的一个过程中。我不能谈论那个项目,这就是为什么我要解释我被卡住的部分。

项目中有很多记录,比如说 200 万,我想全部迭代。

我尝试通过多种方式迭代它们,在我的情况下它跳过了一些记录,如果发生一些错误,那么我想返回成功迭代的记录。

标签: androidrx-java

解决方案


我想我之前遇到过这个问题。下面的代码将为此目的帮助您。

private val compositeDisposable = CompositeDisposable()
fun thenAllValuesAreBufferedAndReceived() {
    val observable = Observable.rangeLong(0,10000)
    val testSubscriber = observable
    .toFlowable(BackpressureStrategy.BUFFER)
    .subscribeOn(Schedulers.computation())
    .observeOn(Schedulers.computation())
    .buffer(500)
    //.subscribe(::println)
    .subscribeWith(object :FlowableSubscriber<List<Long>>{
    override fun onComplete() {
    println("Flowable OnComplete")
    }

    override fun onSubscribe(s: Subscription) {
    println("Flowable onSubscribe")
    s.request(20)

    }

    override fun onNext(t: List<Long>?) {
    println("Flowable onNext $t")
    }

    override fun onError(t: Throwable?) {
    println("Flowable onError")
    }

    })
}

通过以下代码覆盖 onDistroy 方法并清除compositeDisposable。这将使您的应用程序无崩溃。

override fun onDestroy() {
    super.onDestroy()
    compositeDisposable.clear()
    compositeDisposable.dispose()
}

推荐阅读