比方说,您的DAO具有此方法来更新数据库中的用户记录:
@Update
fun update(user: User): Single<Int>
最近我开始学习RxJava,到目前为止,我已经看到很多类似以下的示例:
// Example 1
disposable.add(dao.updateUser(user)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
Log.d(TAG, "response received")
}
在上面的示例中,我了解到订阅开始后,updateUser()
将在工作线程上执行,一旦执行完成,订阅者将收到通知并在主线程中运行。
但是如果您对updateUser()
的结果不感兴趣,而只想在工作线程上执行updateUser()
怎么办?
到目前为止,我已经尝试过:
// Example 2
dao.updateUser(user)
或
// Example 3
dao.updateUser(user).subscribeOn(Schedulers.io())
但是他们没有用。似乎从未执行过更新请求,未记录任何内容且记录未更改。我猜是因为没有任何订阅者。
现在,我通过附加一个随机用户来强迫它工作,该用户实际上并没有做Example 1
中的那个。这种方法的问题之一是,我可能需要提出很多请求,并且可能会创建很多虚拟订阅者,更不用说代码看起来真的很糟糕。
您能帮我找到一种更好的方法来解决这个问题吗?
答案 0 :(得分:1)
但是您已经为您的问题写了答案。
您可以致电:
dao.updateUser(user).subscribe()
如果要在线程之间进行操作/跳转,您可以执行示例1中的操作。