我在我的Android项目中使用Room,一切都运作良好,直到有一天我发现Room不能立即将数据插入数据库。
如何重现
当我运行命令appdatabase.getUserDao().insert(user)并在2秒钟后拔出手机电池并导出数据库后,我发现数据没有插入数据库。这是100%确定的,因为我的团队多次重现了此问题。似乎它会缓存数据一段时间而不是直接存储到数据库中。
是否有解决方法可以使数据直接存储到数据库中而不是缓存?
我在我的Android项目中使用Room,一切都运作良好,直到有一天我发现Room不能立即将数据插入数据库。
如何重现
当我运行命令appdatabase.getUserDao().insert(user)并在2秒钟后拔出手机电池并导出数据库后,我发现数据没有插入数据库。这是100%确定的,因为我的团队多次重现了此问题。似乎它会缓存数据一段时间而不是直接存储到数据库中。
是否有解决方法可以使数据直接存储到数据库中而不是缓存?
是的,在导出之前关闭数据库:
RoomDatabase.close()
Room.databaseBuilder()
而不是
Room.inMemoryDatabaseBuilder()
检查线程是否正常执行,且您没有中断 @Transaction
插入操作。
setJournalMode
TRUNCATE。