MVP + RxJava – ¿Poner los progtwigdores en el presentador o en el interaccionador?

Estoy desarrollando una aplicación de Android con MVP y RxJava. Bueno, tengo una duda:

Cuando estoy creando mi presentador e interactor puedo ponerme los progtwigdores en el presentador, así:

Progtwigdores en el presentador

Presentador:

override fun tryLogin(username: String, password: String) { mLoginInteractor.login(username, password) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(object : Subscriber<User>(){ [...] } 

Interactor de inicio de session:

 override fun login(username: String, password: String) = mRetrofit.create(ApiClient::class.java).login() 

O puedo configurar los progtwigdores en Interactor, así:

Progtwigdores en el Interactor

Presentador:

  override fun tryLogin(username: String, password: String) { mLoginInteractor.login(username, password) .subscribe(object : Subscriber<User>(){ [...] } 

Interactor de inicio de session:

  override fun login(username: String, password: String) = mRetrofit.create(ApiClient::class.java).login() .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) 

Veo que Google aconseja establecer Schedulers en el Interactor. Puedes ver esto en este enlace:

https://github.com/googlesamples/androidarchitecture/tree/todo-mvp-rxjava/

Pero muchas personas ponen el código en el Presentador, como este ejemplo:

https://github.com/BoydHogerheijde/Android-MVP-example/blob/master/app/src/main/java/nl/bhogerheijde/example/rxmvp/interactor/Interactor.java

Entonces, ¿configuro Schedulers en el Presentador o en el Interactor ?

(Creo que es una mejor idea include el Presentador porque el trabajo de Intractor es solo para get los Datos, pero tal vez estoy equivocado …)

Si desea tener una buena capacidad de compilation, le recomiendo que especifique sus planificadores lo más tarde posible (a less que sea necesario); esto usualmente significa justo antes de suscribirse. De esta forma, puede reutilizar fe login() en otro flujo sin tener que realizar subprocesss todo el time.

Sin embargo, esto es como, solo mi opinión …

Si vas a probar en equipo al presentador, probablemente debas poner el planificador en el interactor, porque el subscribeOn() está (la mayoría de las veces) relacionado con Android (debido al progtwigdor principal de subprocesss) y no podrás pon a testing tu presentador (a less que te burles de los progtwigdores) si tiene classs específicas de Android dentro de él.

  • Cómo burlarse del repository reactivo que devuelve Observable
  • Obtener files adjuntos de publicaciones de Facebook devolver NullPointerException
  • ¿Expresar "súper" generics en los types funcionales de Kotlin?
  • RxJava usando Kotlin - cómo sincronizar 2 methods asíncronos, refactorizar desde Java
  • ¿Cómo puedo agregar de manera condicional una operación asincrónica en medio de una transmisión de RxJava?
  • Extraño comportamiento de componer y ObservableTransformer en RxJava cuando el genérico pasado se extiende
  • Operador RxJava para el método de conmutación
  • Reemplazar callbacks llamados externamente con RxJava
  • ¿Cómo crear caching / versión caliente de rx.Single?
  • Usando RxJava con Handler, restablece Message.what value
  • RxJava, ¿Qué pasó si no llamo a disponer?