我将尝试关闭并重新打开Room数据库。(目的是备份SQLite文件)
这是我如何关闭它:
public static void destroyInstance() {
if (INSTANCE != null && INSTANCE.isOpen()) {
INSTANCE.close();
}
INSTANCE = null;
}
INSTANCE是一个RoomDatabase对象。
为了重新打开,我通过调用以下代码来初始化INSTANCE对象:
Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, C.ROOM_DB_NAME)
当我切换到另一个活动后,在logcat中看到以下错误:E/ROOM: Invalidation tracker is initialized twice
SELECT查询正常工作,但插入失败并显示以下错误:
E/SQLiteLog: (1) no such table: room_table_modification_log
E/ROOM: Cannot run invalidation tracker. Is the db closed?
java.lang.IllegalStateException: The database '/data/user/0/ro.example.example/databases/mi_room.db' is not open.
尽管INSTANCE.isOpen()返回true
Room版本:1.1.1
有人知道这个“room_table_modification_log”表是干什么的吗?