Android开发

room数据库关闭以后正确打开的方式,Android ROOM

2021-03-29  本文已影响0人  中v中

当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;
        }
    }
上一篇下一篇

猜你喜欢

热点阅读