我有一个返回像这样的Observable的方法:
open fun get(): Observable<Response> {
return if (condition)
getDataFromApi()
else
getDataFromDb()
}
,并按以下方式订阅:
get()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(/*a object of class extending DefaultObserver*/)
当调用getDataFromDb()并在一段时间后根据条件调用getDataFromApi()时,我面临着这个问题。对于第一次调用,它工作正常,但是在第二次调用onNext时,使用getDataFromDb()的旧数据响应多次调用onNext。请让我知道我在做什么错。我对RxJava有点陌生。
答案 0 :(得分:1)
如果getDataFromDb()正在发射项目并且调用了getDataFromApi(),则第一个方法将继续发射直到完成。如果不再需要该流,则应该取消订阅该流,并在源中添加条件,以便在观察到的未订阅状态下停止发射。
还请记住,在订阅流之前,可观察对象内部的功能不会运行。