首页 > 解决方案 > 如何正确处理 Room 线程

问题描述

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

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

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

标签: androidandroid-roomandroid-thread

解决方案


如果您使用 LiveData 从 Room 中检索数据,它会在工作线程中执行。对于其他查询,您可以使用 Executors and Repository 模式。您可以查看此页面以获取应用架构指南

您可以查看此链接以获取 Rx 和其他架构组件示例。


问题作者的分析笔记:

在示例中,他们使用 aCompletable来包装Room delete 调用,然后将其安排到io()调度程序上,对空完成和任何错误做出反应。可以在此处找到该特定代码。


推荐阅读