Я получаю сообщение об ошибке такого типа:
Fatal Exception: java.lang.IllegalStateException: Cannot create asynchronous query while in a write transaction in /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsResults.cpp line 252
at io.realm.internal.OsResults.nativeStartListening(OsResults.java)
at io.realm.internal.OsResults.addListener(OsResults.java:405)
at io.realm.internal.OsResults.addListener(OsResults.java:412)
at io.realm.RealmResults.addChangeListener(RealmResults.java:173)
at io.realm.internal.ObservableCollection$RealmChangeListenerWrapper.onChange(ObservableCollection.java:39)
at io.realm.internal.ObservableCollection$CollectionObserverPair.onChange(ObservableCollection.java:20)
at io.realm.internal.ObservableCollection$Callback.onCalled(ObservableCollection.java:64)
at io.realm.internal.ObservableCollection$Callback.onCalled(ObservableCollection.java:54)
at io.realm.internal.ObserverPairList.foreach(ObserverPairList.java:109)
at io.realm.internal.OsResults.notifyChangeListeners(OsResults.java:451)
at io.realm.internal.OsSharedRealm.nativeBeginTransaction(OsSharedRealm.java)
at io.realm.internal.OsSharedRealm.beginTransaction(OsSharedRealm.java:269)
at io.realm.BaseRealm.beginTransaction(BaseRealm.java:401)
at io.realm.Realm.beginTransaction(Realm.java:146)
Как я могу убедиться, что я не в транзакции, когда добавляю addChangeListeners?Может помочь простой подход mRealm.isInTransaction
, или проблема в структуре кодов?
public void update() {
sData = dataQuery.sort(Data.ORDER, Sort.ASCENDING).findAllAsync();
sData.addChangeListener(new RealmChangeListener<RealmResults<Data>>() {
@Override
public void onChange(RealmResults<Data> element) {
sDiffData = mRealm.where(DiffData.class)
.greaterThanOrEqualTo(...)
.lessThan(...)
.equalTo(..)
.findAllAsync();
sDiffData.addChangeListener(new RealmChangeListener<RealmResults<...>>() {
@Override
public void onChange(RealmResults<...> element) {
...
});
}
});
}
Я не могу воспроизвести ошибку самостоятельно, но вижу ее в аварийных сообщениях, которые появляются довольно часто.