[JAVA] abonnieren und beobachten

Ich denke, Sie können RXJava bei der Entwicklung von Android-Apps verwenden. Zu dieser Zeit war ich süchtig nach dem Scheduler von SubscribeOn und ObservOn. Machen Sie sich also eine Notiz

subscribeOn

subscribeOn gibt den Thread an, der für den gesamten RX-Java-Stream verwendet werden soll. Zum Beispiel, wenn Sie den folgenden Code haben (Auszug aus https://medium.com/upday-devs/rxjava-subscribeon-vs-observeon-9af518ded53a)

just("Some String") // Computation
  .map(str -> str.length()) // Computation
  .map(length -> 2 * length) // Computation
  .subscribeOn(Schedulers.computation()) // Computation
  .subscribe(number -> Log.d("", "Number " + number));// Computation

Dies ist ein Berechnungsthread, der die gesamte Verarbeitung der vom Observable fließenden Daten übernimmt.

observeOn

Beobachten Sie andererseits On

just("Some String") // UI
  .map(str -> str.length()) // UI
  .map(length -> 2 * length) // UI
  .observeOn(Schedulers.computation()) // Computation
  .subscribe(number -> Log.d("", "Number " + number));// Computation

Der Prozess nach dem Downstream, in dem ObservOn platziert ist, ist der angegebene Thread. Wenn in diesem Code keine Spezifikation vorhanden ist, wird sie vom UI-Thread verarbeitet, aber die Verarbeitung nach Angabe mit ObservOn wird vom Berechnungsthread verarbeitet.

Wie man richtig benutzt

Stellen Sie sich einen Fall vor, in dem eine zeitaufwändige Verarbeitung wie der API-Zugriff asynchron ausgeführt wird und die Verarbeitung, die den Abonnenten benachrichtigt, wenn die Daten bereit sind, mit RX Java ausgeführt wird. Zu diesem Zeitpunkt ist es denkbar, einen Thread anzugeben, der die Verarbeitung asynchron als Arbeitsthread ausführt. Geben Sie daher den Thread an, der die gesamte Verarbeitung mit subscribeOn ausführt.

Wenn Sie jedoch die Abonnement- und Bedienungsansicht darin ausführen, können Sie dies im Arbeitsthread nicht so tun, wie es ist. Daher können Sie die Ansichtsoperation ausführen, indem Sie Ein beobachten und im UI-Thread verarbeiten, wenn Sie die Ansichtsoperation ausführen.

Referenz

http://techlife.cookpad.com/entry/2015/04/13/170000

https://medium.com/upday-devs/rxjava-subscribeon-vs-observeon-9af518ded53a

Recommended Posts

abonnieren und beobachten