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 …)

Solutions Collecting From Web of "MVP + RxJava – ¿Poner los progtwigdores en el presentador o en el interaccionador?"

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.