如何正确处理 Room 线程

How to properly approach threading with Room

我对房间感到困惑,无法在文档中找到答案。

因此,库强制在单独的线程上使用查询,这是可以理解的。但是,删除查询似乎不包含在这个限制中,可以从 UI 线程中自由调用。他们也总是 return 原始输出值,没有机会将其包装在 Observable 中。

房间然后删除调用的正确使用方法是什么?它应该在单独的线程上 运行 吗?如果不是,那么性能和并发修改呢?

如果您使用 LiveData 从 Room 检索数据,它将在工作线程中执行。对于其他查询,您可以使用执行器和存储库模式。您可以查看此页面以了解 guide to app architecture

您可以查看此 link Rx 和其他架构组件示例。


问题作者分析笔记:

在样本中,他们使用Completable来包装房间删除呼叫,然后安排它到 io() 调度程序,对空的完成和任何错误做出反应。可以找到该特定代码 here.