android - Rxjava 大号 迭代然后跳过记录
问题描述
我被困在我当前项目的一个过程中。我不能谈论那个项目,这就是为什么我要解释我被卡住的部分。
项目中有很多记录,比如说 200 万,我想全部迭代。
我尝试通过多种方式迭代它们,在我的情况下它跳过了一些记录,如果发生一些错误,那么我想返回成功迭代的记录。
解决方案
我想我之前遇到过这个问题。下面的代码将为此目的帮助您。
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()
}
推荐阅读
- python - 使用 Python 应用 XSLT 2.0 转换
- shell - 如何确认两个作业信息之间是否存在节点?
- java - 如何以字符串格式(01:30:24)从特定时间开始计时?[安卓]
- c# - 硒网格仅在 1 个节点上运行代码,而不是全部
- javascript - 如何使用 JS/JQuery 从表单中获取数据并使用 yii2 将信息传递给控制器?
- php - 使用 ccxt 加密 API 的 ETH/BTC 套利交易在创建买单时抛出错误
- python-3.x - Spyder 不会为 matplotlib 绘图释放内存
- oracle - 无法使用 OCI Storage Gateway 挂载我的 Storage Gateway 文件系统
- c++ - 我在这个 while 循环中错过了什么?
- neural-network - 如何将更多图像输入到 caffe 模型中?