你好,我想问一下关于rxjava和room的事。
这是我房间的刀:
@Query("SELECT * from `Order` WHERE id = :ID")
fun findOrderById(ID: Int): Flowable<Order>
下面是调用dao的代码:
mDB.orderDataDao().findOrderById(orderId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
if (it.deliveryStatus == EnumOrder.IN_DELIVERY.name) {
mView.orderInProgress()
mView.setOrderFromDB(it, true)
} else {
mView.noOrderInProgress()
mView.setOrderFromDB(it, false)
}
}
我的问题是,为什么在调用dao时会得到警告“subscribe的结果没有在rxjava上使用”。为什么会发生这种事,我怎样才能纠正?我在每个使用rxjava的代码中都得到了警告。
最佳答案
subscribe()
应该返回一个Disposable
,您可以使用它在以后注销接收来自Flowable
的更新的兴趣。若要删除此警告,请将从订阅返回的可弃文件存储在实例变量中,并将其与生命周期一起用于取消订阅更新。例如。:
val disposable = mDB.orderDataDao().findOrderById(orderId).subscribe { /**/ }
//...
disposable.dispose();