Android Room 数据库没有立即在数据库中插入数据

问题描述 投票:0回答:2

我在我的android项目中使用了room,一切都工作正常,直到有一天我发现Room不会立即在数据库中插入数据。

我如何复制它

当我运行命令 appdatabase.getUserDao().insert(user) 并在 2 秒后,当我从手机中取出电池并导出数据库时,我发现数据未插入数据库中。这是 100% 肯定的,因为我的团队已经多次复制了它。似乎不是直接存储到数据库中,而是将数据缓存一段时间。

有什么解决方案吗?数据将直接存储在数据库中而不是缓存?

android kotlin android-sqlite android-room android-architecture-components
2个回答
2
投票

是的,导出前关闭数据库:

RoomDatabase.close()

确保它是

Room.databaseBuilder()

而不是

Room.inMemoryDatabaseBuilder()

检查线程是否正确执行并且您没有中断

@Transaction
插入


0
投票

我得到了这个问题的答案。 Room db 首先将数据写入.wal 缓存文件,然后再写入数据库。 要直接写,请

setJournalMode
TRUNCATE。

参考链接:https://developer.android.com/reference/androidx/room/RoomDatabase.JournalMode

© www.soinside.com 2019 - 2024. All rights reserved.