[JAVA] subscribeOn et observeOn

Je pense que vous pouvez utiliser RXJava lors du développement d'applications Android. A cette époque, j'étais accro au planificateur de subscribeOn et observeOn, alors prenez note

subscribeOn

subscribeOn spécifie le thread à utiliser pour l'ensemble du flux Java RX. Par exemple, si vous avez le code suivant (Extrait de 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

Il s'agit d'un thread de calcul qui gère l'ensemble du traitement des données provenant de l'observable.

observeOn

D'autre part, observez

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

Le processus après l'aval où observeOn est placé sera le thread spécifié. Dans ce code, s'il n'y a pas de spécification, il est traité par le thread d'interface utilisateur, mais le traitement après l'avoir spécifié avec observeOn est traité par le thread de calcul.

Comment utiliser correctement

Prenons un cas où un traitement fastidieux tel que l'accès à l'API est effectué de manière asynchrone, et un traitement qui avertit l'abonné lorsque les données sont prêtes est effectué à l'aide de RXJava. À ce stade, il est envisageable de spécifier un thread qui effectue le traitement de manière asynchrone en tant que thread de travail. Par conséquent, spécifiez le thread qui exécute tout le traitement avec subscribeOn.

Cependant, si vous exécutez subscribe et opérez la vue dans ce dernier, vous ne pouvez pas le faire dans le thread de travail tel quel. Par conséquent, lorsque vous effectuez une opération d'affichage, vous pouvez effectuer une opération d'affichage en observant Activé et en la traitant dans le thread d'interface utilisateur.

référence

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

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

Recommended Posts

subscribeOn et observeOn