订阅的结果没有在 rxjava 上使用
The result of subscribe is not used on rxjava
您好,我想问一下 rxJava 和 Room。
这是我房间的 Dao:
@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 时收到警告 "The result of subscribe is not used on rxjava"。为什么会发生这种情况以及我如何才能做到这一点?我在每个使用 rxJava 的代码中都收到了警告。
subscribe()
应该 return 一个 Disposable
,您以后可以用它来取消注册您对从 Flowable
接收更新的兴趣。要删除此警告,请将订阅的 Disposable returned 存储在一个实例变量中,并将其与生命周期一起使用以取消订阅更新。例如:
val disposable = mDB.orderDataDao().findOrderById(orderId).subscribe { /**/ }
//...
disposable.dispose();
或者在您的演示器中创建 CompositeDisposable
并在其中添加每个一次性用品。并在 onDestroy()
调用 compositeDisposable.dispose()
.
您好,我想问一下 rxJava 和 Room。
这是我房间的 Dao:
@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 时收到警告 "The result of subscribe is not used on rxjava"。为什么会发生这种情况以及我如何才能做到这一点?我在每个使用 rxJava 的代码中都收到了警告。
subscribe()
应该 return 一个 Disposable
,您以后可以用它来取消注册您对从 Flowable
接收更新的兴趣。要删除此警告,请将订阅的 Disposable returned 存储在一个实例变量中,并将其与生命周期一起使用以取消订阅更新。例如:
val disposable = mDB.orderDataDao().findOrderById(orderId).subscribe { /**/ }
//...
disposable.dispose();
或者在您的演示器中创建 CompositeDisposable
并在其中添加每个一次性用品。并在 onDestroy()
调用 compositeDisposable.dispose()
.