Rxjava2流动不开火onComplete
这是代码
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不会开火。 也没有错误信息。 我正在将一个小区的名单装入一个微调。 使用房间数据库和Kotlin这是我得到Flowable的地方
fun getAllDistricts(): Flowable<List<District>> { Timber.d("District list accessed") return appDatabase.districtDao().getAllDistricts() .subscribeOn(Schedulers.io()) }
由房间返回的Flowable
永远不会完成。 它允许您在数据库修改时接收更新。
以下是Flowable的行为方式:
- 当数据库中没有用户并且查询不返回任何行时,Flowable将不会发出onNext和onError。
- 当数据库中有用户时,Flowable将触发onNext。
- 每当用户数据更新时,Flowable对象将自动发出,允许您根据最新数据更新UI。
如果你想接收onComplete
事件,切换到Maybe
。 你应该阅读这篇文章 。