2016-06-08 10 views
1

Ich habe eine dynamische Liste von Befehlen, die ausgeführt werden sollen. Einige dieser Befehlsobjekte sollten in einem Hintergrundthread ausgeführt werden, und einige von ihnen müssen auf dem UiThread ausgeführt werden, da sie Ansichten ändern und Animationen auslösen.Android RXJava Reiniger Lösung

Einige Befehle dürfen nicht ausgeführt werden, bevor ein anderer Befehl beendet wurde. Z.B. C1 löst eine Einblende-Animation aus, die 2 Sekunden dauert. C2 löst eine Fade-Out-Animation aus. => Die Verzögerung zwischen den Befehlen ist dynamisch.

Ich bin ein Neuling für RXJava. Meine Lösung funktioniert, scheint aber nicht sehr elegant zu sein.

=> Bevor ich die Liste der Befehle in ein Observable umwandele, füge ich "Wait" -Befehle hinzu, wo nötig. Der Befehl wait ruft Thread.sleep (delayInMs) auf. Beobachtung und Abonnement laufen beide auf demselben Hintergrundthread. Das Observable gibt die Befehle aus. Wenn der Befehl eine Instanz von UiCommand ist, sendet der Abonnent die Ausführung an den uiThread, andernfalls führt er den Befehl für den Hintergrundthread aus.

Was ist der beste Weg, um dieses Problem mit RXJava zu lösen? Ich würde gerne die UiThread Beiträge und die vorbereitende Vorbereitung der Liste loswerden. Ersetzen Sie dies jedoch durch RXJava-Funktionen.

+0

Sie Ihren Code hinzufügen müssen werde, in der aktuellen Form Ihre Frage zu breit ist –

Antwort