当room数据库关闭以后,做恢复备份,数据同步,完成之后,直接使用会出现一下错误
Android ROOM Cannot run invalidation tracker. Is the db closed?
,但是重新启动app就又可以正常使用,没毛病。
当app不允许肆意重启的情况该怎么处理呢,
百度n多,大家支招都是将版本回滚到1.1.0,一是项目肯定不能接受退回低版本方案2是将版本从room 1.1降低到room 1.1-rc1也并不能解决问题。
最终解决方案:
置空实例化对象,重置线程池
代码如下:
public synchronized static AppDatabase getDatabase(Context context) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, "test.db").allowMainThreadQueries().build();
}
return INSTANCE;
}
// 正确到关闭数据库方式
public static void closeDatabase() {
if (INSTANCE != null && INSTANCE.isOpen()) {
INSTANCE.close();
INSTANCE = null;
}
}
网友评论