订阅的结果未在rxjava上使用

Ali*_*ana 2 android rx-java rx-java2 android-room

您好,我想问一下rxJava和Room。

这是我房间的道:

@Query("SELECT * from `Order` WHERE id = :ID")
fun findOrderById(ID: Int): Flowable<Order>
Run Code Online (Sandbox Code Playgroud)

这是调用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)
                    }
                }
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么在调用Dao时会出现警告“ rxjava上未使用subscribe的结果”。为什么会发生这种情况以及我该如何做对?我在使用rxJava的每个代码中都得到了警告。

PPa*_*san 5

subscribe()应该会返回Disposable,您可以用来取消注册Flowable以后收到您的更新的兴趣。要删除此警告,请将订阅中返回的Disposable存储在实例变量中,并将其与生命周期一起使用以取消订阅更新。例如:

val disposable = mDB.orderDataDao().findOrderById(orderId).subscribe { /**/ }

//...

disposable.dispose();
Run Code Online (Sandbox Code Playgroud)