我们是否需要为 Room 数据库使用同步块 [closed]

Do we need to use a synchronized block for Room database [closed]

提问人:user1743524 提问时间:7/21/2023 更新时间:7/22/2023 访问量:42

问:


这个问题似乎不是关于帮助中心定义的范围内的编程。

4个月前关闭。

我有一些代码,我想使用线程池之类的东西,因为我一次进行多个事务。我曾经使用带有同步块的 SQLite 数据库。我认为 Room 可以为您处理多线程行为。这是对的吗?

android-sqlite 同步 android-多线程

评论


答:

2赞 MikeT 7/21/2023 #1

我认为 Room 可以为您处理多线程行为。这是对的吗?

不,它没有。

  • Room 是 SQLite 的包装器,默认情况下,它不允许你使用主线程(在构建数据库时使用 .allowMainThreadQueires 可以规避限制)。最终结果仍然是 SQLite 数据库,根据生成的设备附带/已安装的 SQLite 版本。

  • Room 确实实现了一些添加,例如 room_master_table(它存储一个哈希值,该值在运行时与编译的哈希值进行比较,以检测是否进行了更改(哈希是架构的哈希值,Room 根据定义的批注类生成该哈希值))。@Entity@Database