android - 基于表修改的房间检查失效
解决方案
这意味着,
假设您有以下查询
@Query(“SELECT * FROM Users WHERE userId = :id)
fun getUser(id: String): LiveData<User>
你正在观察它
getUser("id_1").observe(this, Observer{
// do something
})
上述方法没有任何问题,但存在误报通知的情况。
现在假设您从其他地方删除了带有userId = "id_2"
. 在这一点上,您知道您不需要通知您之前的getUser("id_1")
呼叫,因为它与您对id_2
. 但是您仍然会收到通知,并且您// do something
将再次运行。那是因为,Room 会知道某些内容已更改,但不知道已更改的内容,因此它只会重新查询并再次发送结果。
为了绕过这个误报通知,您可以使用MediatorLiveData
when you have LiveData
as return type 或distinctUntilChanged
if you are have RxJava
as return type in your Daos。
参考:房间的 7 个专业提示
推荐阅读
- f# - 如何在 F# 中使用 xplot/plotly 跳过图形块?
- excel - Excel Product-If 函数没有 CSE 公式
- api - 来自谷歌表格的 API 调用太长
- windows - 安装 docker 后无法从 Windows 访问 wsl Web 应用程序
- angular - 带电容器 convertFileSrc 的问题电容器
- javascript - Django 项目不渲染 React.js
- node.js - NodeJS SyntaxError:意外的操作令牌
- python - Selenium 下拉按钮的问题
- spring-boot - Spring Boot @query nativequery 不起作用
- soap - 尝试为 Sabre Retrieve Itinerary API 生成工件时出现 wsimport schema_reference 警告