这是代码

    private fun setUpDistrictSpinner() {
    commonRepo.getAllDistricts()
            .observeOn(AndroidSchedulers.mainThread())
            .flatMap { list -> Flowable.fromIterable(list) }
            .map { district ->
                districtNameList.add(district.district_name)
                district
            }.subscribe(object:Subscriber<District>{
        override fun onComplete() {
            labSelectionInterface.loadDistricts(districtNameList)
            Timber.d("district List loaded total " + districtList.size)
        }

        override fun onError(t: Throwable?) {
            t!!.printStackTrace()
        }

        override fun onNext(t: District) {
            districtList.add(t)
        }

        override fun onSubscribe(s: Subscription) {
            s.request(Long.MAX_VALUE)
        }
    })

}

onNext 正在触发,但 onComplete 不会触发。也没有错误信息。我正在将地区列表加载到微调器中。使用 Room 数据库和 Kotlin
这是我获得 Flowable 的地方
    fun getAllDistricts(): Flowable<List<District>> {
    Timber.d("District list accessed")
    return appDatabase.districtDao().getAllDistricts()
            .subscribeOn(Schedulers.io())

}

最佳答案

Room 返回的 Flowable 永远不会完成。它允许您在数据库修改时接收更新。



如果要接收 onComplete 事件,请切换到 Maybe 。你应该阅读这个 article

关于android - Rxjava2 flowable 不触发 onComplete,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46541385/

10-09 16:00