RxJava2 + Retrofit pantalla negra en request de datos

Estoy enfrentando un problema con una aplicación de Android mientras trato de recuperar algunos datos Api utilizando RxJava2 y Retrofit2 (en Kotlin). Una vez que ejecuto la llamada, la pantalla se vuelve negra y la aplicación ya no responde, sin ningún post de logging.

La URL de llamada que estoy usando es la siguiente:

api/apartments?projection={"id":1,"address":1} 

La interfaz de service para esta llamada es esta:

  @GET("api/apartments?projection={\"id\":1,\"address\":1}") fun getAllApartments(@Header(AUTHORIZATION) auth: String): Single<List<APTLIST>> 

Esta es la forma en que ejecuto la llamada:

  override fun getAllApartments(): Single<List<APTLIST>> = retrofit.create(ApartmentsService::class.java).getAllApartments("$BEARER$token") 

Y así es como llamo a la function:

 getAllApartmentsUseCase.getAllApartments() .subscribe( { apartments.clear() apartments.addAll(it) view.showApartments(apartments) }, { println(it.message) } ) 

Esta llamada funciona en Postman y el resultado es el siguiente:

 [ { "_id": "591ecaca861a528a5b4c3d90", "id": "ROC 03" }, { "_id": "591a0fb2861a528a5b4c3d60" }, { "_id": "58be94d484c4b0a468fb93e0", "id": "CAN 2.3", "address": "Els Refugis" } ] 

Supongo que estás haciendo una llamada web en el hilo principal. Es extraño que solo obtengas algo como ANR y no android.os.NetworkOnMainThreadException.

 getAllApartmentsUseCase .getAllApartments() .subscribeOn(Schedulers.io()) //scheduler in which observable will execute .observeOn(AndroidSchedulers.mainThread()) //scheduler in which subscriber's methods will be called .subscribe(/*subscriber*/) 

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

  • JsonArray a la class de datos de Kotlin con Retrofit (se esperaba BEGIN_OBJECT pero era BEGIN_ARRAY)
  • Kotlin: Cómo convertir la testing que usa Thread.sleep a RxJava TestScheduler
  • Cómo recordar el estado con los operadores de rebashs en RxJava2
  • ¿Cómo puedo indicar explícitamente la finalización de un Flowable en RxJava?
  • ¿Cómo crear un intervalo infinito observable que emitirá un nuevo object cada intervalo de time?
  • Llamar a un RxJava Single In Kotlin Lambda
  • Excepción: blockingConnect no se debe invocar en el subprocess UI a pesar de que subsubscribí en otro subprocess
  • ¿Hay alguna manera de cambiar mi método a la stream Observable que será una cadena de modificadores?
  • RxJava2 observable no procesando en Siguiente cuando hay un cambio
  • Cómo pasar nulo a un Observable con tipo anulable en RxJava 2 y Kotlin
  • RxJava2 switchIfEmpty y verificando una ejecución