In meiner Android-App verwende ich Realm und RxJava, und ich möchte ein Objekt aktualisieren, indem ich einen neuen Wert übergebe. Ich benutze dafür realm.executeTransactionAsync()
. Aber ich möchte dieses Ereignis abonnieren, um die Fehlerbehandlung in der Klasse durchzuführen, in der ich diese Methode verwende. Was ich bisher getan haben, ist dies:Realm: Observable aus asynchroner Transaktion erstellen
public Observable updateDogAge(final String dogId, final int age) {
return Observable.create(new Observable.OnSubscribe<Dog>() {
@Override
public void call(final Subscriber<? super Dog> subscriber) {
realm.executeTransactionAsync(realm1 -> realm1.where(Dog.class)
.equalTo(DOG_ID_FIELD, dogId)
.findFirst()
.setAge(age),
subscriber::onCompleted,
subscriber::onError);
}
});
}
Nun würde Ich mag eine boolean Flagge erhalten, ob oder nicht aktualisiert diese Aufgabe erfolgreich war. Im Moment habe ich das Gefühl, nur subscriber::onCompleted
anrufen ist nicht die richtige Lösung. Ich bin mir auch nicht sicher über die Verwendung von Observable.onCreate()
.
Können Sie mir sagen, was ist der richtige Weg, um eine Observable (oder Single) von einer asynchronen Realm-Transaktion zu bekommen?
eingewickelt ist Das sieht gut aus und einfach, aber die Try-Catch ist nicht fangen der Throwable in der Transaktion. Irgendein Vorschlag dafür? – Terry
Was meinst du mit "den Werfbaren in der Transaktion"? Die 'executeTransaction()' bricht die Transaktion bei Exception bereits ab, dafür ist sie zuständig. – EpicPandaForce
Ich habe versucht, es mit 'executeTransactionAsync' zu verwenden. Mit synchroner Transaktion funktioniert es. – Terry