android - rxjava 上没有使用 subscribe 的结果
问题描述
您好,我想问一下 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 时收到警告“订阅的结果未在 rxjava 上使用”。为什么会发生这种情况以及我如何才能做到这一点?我在每个使用 rxJava 的代码中都收到了警告。
解决方案
subscribe()
应该返回一个Disposable
,您可以使用它来取消注册您Flowable
以后接收更新的兴趣。要删除此警告,请将 subscribe 返回的 Disposable 存储在实例变量中,并将其与生命周期一起使用以取消订阅更新。例如:
val disposable = mDB.orderDataDao().findOrderById(orderId).subscribe { /**/ }
//...
disposable.dispose();
推荐阅读
- java - 我的 Spring-Boot 自定义登录表单不工作 [更新]
- excel - Excel VBA 数组公式使用索引匹配给出错误类型不匹配
- html - 有什么方法可以确保这个线性渐变上的所有条纹都是相同的大小?
- asp.net-mvc - Razor ASP.NET Core:为什么数据库连接状态在第一次加载时显示“正在连接”,然后在重新加载时成功连接到数据库?
- javascript - 使用 x-www-form-urlencoded content-type 将嵌套对象作为表单数据发布
- stata - 在 Stata 上将 Panel 数据从宽格式转换为长格式
- c# - C# HMACSHA256 给出的结果与 PHP hash_hmac 不同
- c++ - 防止 clang 格式在 return 和初始化列表之间放置一个空格
- api-platform.com - 模式生成器:需要几种类型的属性
- angular - 同一Angular组件中两个日期选择器控件上的多种日期格式