为了账号安全,请及时绑定邮箱和手机立即绑定

从不同线程访问的领域数据库对象问题(仅在某些设备上)

从不同线程访问的领域数据库对象问题(仅在某些设备上)

小唯快跑啊 2021-10-28 14:12:22
我有一个单例类“RealmDatabaseManager”,其中我有synchronized从领域本地数据库读取/写入的方法。方法如下所示:public long getPendingImagesCount() {    synchronized (this) {        realm = Realm.getInstance(RealmUtils.getRealmConfiguration());        long count = realm.where(PatientRecordImage.class)                .count();        realm.close();        return count;    }}this单例类的实例在哪里。这些方法通过单例实例从主线程和工作线程访问。每个方法都会创建和关闭它自己的领域。该代码在我正在测试的设备上没有问题,但我收到了来自某些设备的 Crashlytics 报告,给出了两个致命错误。IllegalStateException: Realm objects can only be accessed on the thread they were created.和IllegalStateException: Realm instance can only be closed on the thread it was created.这种方法有什么问题?如果需要,可以提供更多信息。
查看完整描述

1 回答

?
达令说

TA贡献1821条经验 获得超6个赞

可能是因为您将类变量设置为另一个领域,并且您遇到了一些相当复杂的多线程问题;与设备特定性无关。


解决方案:不设置类级别变量?


public long getPendingImagesCount() {

    try(Realm realm = Realm.getInstance(RealmUtils.getRealmConfiguration())) {

        return realm.where(PatientRecordImage.class).count();

    }

}


查看完整回答
反对 回复 2021-10-28
  • 1 回答
  • 0 关注
  • 98 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信