使用RxJava启动异步操作而不订阅可观察的内容?

时间:2019-01-18 07:33:22

标签: android kotlin rx-java2

比方说,您的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中的那个。这种方法的问题之一是,我可能需要提出很多请求,并且可能会创建很多虚拟订阅者,更不用说代码看起来真的很糟糕。

您能帮我找到一种更好的方法来解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

但是您已经为您的问题写了答案。

您可以致电:

dao.updateUser(user).subscribe() 

如果要在线程之间进行操作/跳转,您可以执行示例1中的操作。