RxJava - Verketten von Anfragen und Aktualisieren der Benutzeroberfläche

8

Das Problem, das ich habe, ist das. Ich muss einige Anfragen an den Server ausführen. Jede nächste Anfrage hängt vom vorherigen Ergebnis ab. Sie sehen so aus (abgekürzt):

%Vor%

Ich habe eine einzige Observable mit einer flatMap erstellt, die das PaymentResponse-Objekt zurückgibt oder onError () ausgibt, wenn einige der Anforderungen nicht erfüllt sind. Das funktioniert gut und ich bekomme alle Anfragen in einem einzigen Anruf erledigt.

Das Problem ist, dass ich die Benutzeroberfläche zwischen diesen Anforderungen nicht aktualisieren kann. Bei der aktuellen Einrichtung zeige ich das Laden an, wenn die Anfrage beginnt, und blende es aus, wenn alle Anfragen abgeschlossen sind. Gibt es eine Möglichkeit, die Benutzeroberfläche zwischen diesen Anforderungen zu aktualisieren?

Was ich will ist das: 1. Datei hochladen - Schreiben Sie eine Nachricht auf der Benutzeroberfläche. 2. Erstellen eines Tokens - Schreiben Sie eine Nachricht auf der Benutzeroberfläche. 3. Bestellung abschicken - Schreiben Sie eine Nachricht auf der Benutzeroberfläche. 4. Wenn alle Angaben vollständig sind, blende den Fortschrittsdialog aus.

Mein Verständnis wäre, mit onNext () ein Observable auszugeben, wenn jeder API-Aufruf beendet ist, und dann onComplete () aufzurufen, wenn alle fertig sind. Aber wie mache ich das?

    
Tomislav Turcic 07.03.2017, 17:10
quelle

1 Antwort

9

Das erreichen Sie mit doOnNext und a PublishSubject . Erstellen Sie zuerst ein Thema und einige Werte:

%Vor%

Wenn Sie Ihre Upload-Arbeit machen, senden Sie einfach den Wert jedes Mal an den Betreff:

%Vor%

Dann können Sie die Subject abonnieren und Ihre UI aktualisieren:

%Vor%

Alternativ können Sie, je nachdem, wie Sie Ihre App gestalten möchten, die Aufrufe der Update-Ansicht von doOnNext jedes Mal aufrufen. Sie müssten wahrscheinlich observeOn verwenden, um zwischen den Hauptfunktionen & amp; Hintergrund Thread jedes Mal.

    
Jahnold 07.03.2017, 17:52
quelle

Tags und Links