У меня есть одноэлементный класс 'RealmDatabaseManager', где у меня есть synchronized
методы для чтения / записи из локальной базы данных области.
Методы выглядят так:
public long getPendingImagesCount() {
synchronized (this) {
realm = Realm.getInstance(RealmUtils.getRealmConfiguration());
long count = realm.where(PatientRecordImage.class)
.count();
realm.close();
return count;
}
}
Где this
является экземпляром одноэлементного класса.
Доступ к этим методам осуществляется как из основного, так и из рабочего потоков через экземпляр singleton.Каждый метод создает и закрывает свою собственную область.
Код работает без проблем на устройствах, на которых я тестирую, но я получил отчеты 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.
Что не так с этим подходом?Может предоставить больше информации, если это необходимо.