美文网首页Android开发
room数据库关闭以后正确打开的方式,Android ROOM

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

作者: 中v中 | 来源:发表于2021-03-29 17:20 被阅读0次

当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;
        }
    }

相关文章

网友评论

    本文标题:room数据库关闭以后正确打开的方式,Android ROOM

    本文链接:https://www.haomeiwen.com/subject/edwbhltx.html