Warum führt dieser Code endlos .subscribe (..) aus? Ich nahm an, dass das Ereignis nur einmal ausgelöst wird, wenn das passende Content-Objekt gefunden wird. Aber es fängt immer wieder an.RxJava Realm findFirstAsync() Ergebnis wird nicht geladen, findFirst() feuert endlos
realm.where(Content.class)
.equalTo("keyID", id)
.findFirst()
.<Content>asObservable()
.map(this::getPostFromContent)
.subscribe(post -> {
loadComments(post.getId());
});
Und wenn ich zu .findFirstAsync ändern() wirft eine Ausnahme: „kann keine Zeile zugreifen, die nicht geladen ist, stellen Sie sicher, dass die Instanz durch den Aufruf RealmObject.isLoaded geladen wird()“
Ich benutze die neueste Version von Realm.
UPDATE
konnte ich diese Arbeit machen, indem Sie:
realm.where(RealmWrappedContent.class)
.equalTo("keyID", id)
.findFirstAsync()
.<RealmWrappedContent>asObservable()
.filter(post -> post.isLoaded())
.first()
.map(this::getPostFromContent)
.subscribe(post -> {
loadComments(post.getId());
});
Aber das ist viel zu viele, was man nur schreiben müssen Reich Objekte als Observablen zu verwenden. Gibt es einen besseren Weg?
Ich nehme an, dass Sie im ersten Fall jedesmal ein Ereignis erhalten, wenn sich das darunterliegende Realm ändert, lesen Sie dazu die [Dokumente zur Verwendung von 'asObservable()'] (https://realm.io/docs/java/latest /api/io/realm/RealmResults.html#asObservable--) – EpicPandaForce