订阅的结果没有在 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().