【发布时间】:2020-05-23 09:15:26
【问题描述】:
在某些情况下,我需要链接 RxJava 调用。
最简单的一个:
视图模型:
fun onResetPassword(email: String) {
...
val subscription = mTokenRepository.resetPassword(email)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(
//UI update calls
)
...
}
我的仓库:
fun resetPassword(email: String): Single<ResetPassword> {
return Single.create { emitter ->
val subscription = mSomeApiInterface.resetPassword(email)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe({
emitter.onSuccess(...)
}, { throwable ->
emitter.onError(throwable)
})
...
}
}
我的问题
我需要添加吗:
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
为避免任何应用程序冻结的两个调用?还是 API 调用的第二个就足够了?
【问题讨论】:
-
为什么你的存储库中有
subscribe? -
@EpicPandaForce 起初我总是在 ViewModel 中完成我的逻辑。然后我意识到如果我们有多个存储库(数据库、远程、内存)如果我在 ViewModel 中执行逻辑并且这些存储库的数据模型不同,它可能会导致混乱。我不认为我的方法是对的。