Was ist der beste Weg, um neue Objekte automatisch von einer Observablen abzurufen, wenn Sie ein externes Ereignis haben, das Ihnen sagt, dass Sie dies tun sollten?Automatisches Abrufen von Objekten aus beobachtbaren Objekten, wenn ein Ereignis ohne Ereignisbus ausgelöst wird
Zum Beispiel kann sagen, ich habe und ItemRepository
, die eine getAllItems()
Methode implementiert (die Observable<List<Item>>
von einem Webservice zurückgibt), und dann ein externes Ereignis (wie eine Push-Benachrichtigung) erzählt meine Anwendung, die die Daten aktualisiert werden muss. (Auch die ItemRepository
in einem Presenter
verwendet und dass Moderator genannt hat die getAllItems
und es onNext
ist, ist es Daten s aktualisiert.)
Ich weiß, das leicht mit Eventbus getan werden kann (hören Sie für dieses Ereignis, wenn seine gefeuert , hole wieder), aber ich frage mich, ob es möglich ist, das komplett automatisch zu machen.
Danke.
bearbeiten
Dies ist eine Lösung, die ich mit aufkommen, mit Hilfe von SQLBrite Bibliothek, aber nicht sicher, ob es der beste oder sauberste Weg, es zu tun. wir haben eine PublishSubject, dass die Ereignisse zu gesendete:
PublishSubject<Object> updateEvent;
und in den getAllItems() -Methode, prüfen wir für die Ereignisse von diesem Thema:
public Observable<List<Item>> getAll() {
Observable.OnSubscribe<List<Item>> subscribe = subscriber -> {
updateEvent.subscribe(s -> {
subscriber.onNext(dbItemRepository.getAll());
});
subscriber.onNext(dbItemRepository.getAll());// for the first call
};
final Observable<List<Item>> automatonObservable = Observable.create(subscribe) =
.onBackpressureLatest()
.observeOn(Schedulers.computation())
.onBackpressureLatest();
return automatonObservable;
}
Rückrufe? LocalBoradcastManager? – tamtom
@tamtom bitte über die Implementierung von Rückrufen in diesem Fall, danke. – Bobby
Bitte, überprüfen Sie meine Antwort! –