Ich versuche, einen Proxy für meine Modelle mit RxJava zu erstellen, dieser Proxy lässt andere für Änderungen im Modell abonnieren.PublishSubject on fireNext wenn abonniert
Hier ist eine vereinfachte Version meiner Proxy:
class MyModelProxy {
private static MyModelProxy instance;
private MyModel model;
private PublishSubject<MyModel> subject;
private MyModelProxy() {
this.model = // load from cache
this.subject = PublishSubject.create();
}
public static Observable<MyModel> observe() {
if (instance == null) {
instance = new MyModelProxy();
}
return instance.subject;
}
private void modelUpdated() {
this.subject.onNext(this.model);
}
}
Es gibt nur eine Instanz von MyModel
im System, aber es könnte im Laufe der Zeit ändern, und so mag ich für dieses Updates registrieren können.
Dieser Code funktioniert gut, wenn ich auf der Observable
von der observe
Methode vor dem Aufruf der onNext
des Betreffs registriert registrieren.
Das Verhalten, das ich will, ist, dass, wenn die subscribe
Methode für diesen Beobachter aufgerufen wird, die aktuelle Instanz von MyModel
an den Abonnenten gesendet wird, der gerade abonniert hat.
Ich dachte über die PublishSubject
erstreckt, aber es ist mein letztes Wort, also dachte ich über meine eigene Version davon zu schreiben (vor allem durch das Kopieren, was in PublishSubject
ist und das Hinzufügen, was ich brauche), aber dann fand ich heraus, dass SubjectSubscriptionManager
Paket Sichtbarkeit hat, so dass ein ist Sackgasse auch.
Irgendwelche Ideen, wie ich diese benötigte Funktionalität hinzufügen kann?
Danke.
Richtig. Dank dafür! –