rx-java2 Schedulers.io () steel invoca el método de mainThread
Estoy tratando de recuperar los datos de la database usando la habitación con la forma Rx. Así es como estoy tratando de hacer eso
override fun onStart() { super.onStart() disposable.add(presenter.getAllBooks() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe({ println(it.size()) })) }
este es el método getAllBooks()
dentro del presentador
- RxJava Debounce onNext ()
- RxJava y Retrofit usando Kotlin
- Cómo crear el controller de respuesta genérica para el error y validar la respuesta utilizando retrofit, rxjava y dagger
- RxJava BehaviorSubject no emite el último elemento?
- RxJava2 switchIfEmpty y verificando una ejecución
fun getAllBooks() : Flowable<List<Book>> { val isMainThread = Looper.myLooper() == Looper.getMainLooper() if (!isMainThread) { updateBooks() return db.bookDao().allBooks } return Flowable.empty() }
Aquí isMainThread
variable es siempre true
, también he intentado observeOn(Shcedulers.io())
, pero el mismo problema.
- Observable.combineLa causa de error más reciente después de actualizar a RxJava 2.xx - no se puede inferir el tipo
- ¿Cómo escalar dinámicamente el rebote de la stream de emisión de ráfagas?
- ¿Cómo se coordina una list de ejecuciones Completables con RxJava?
- No se pudo deducir Kotlin y RxJava
- Asunto de RxJava: escuche el tipo diferente que el que emite
- Convirtiendo un Observable en un Flujo con contrapresión en RxJava2
- Mockito never () no funciona con andThen rxjava2
- Cómo controlar el flujo sin .flatMap, que rompe una stream reactiva que impide que operadores como distinctUntilChanged trabajen en toda la secuencia
Este es un malentendido común con RxJava. getAllBooks
ejecuta su contenido antes de que RxJava entre en escena.
fun method() : Flowable<String> { println("method()") return Flowable.just("hello") } println("Preparing...") val f = method(); println("Subscribing...") f.subscribe({ println(it) })
Imprimirá
Preparing... method() Subscribing... hello
Tienes que ajustar tu acción en un Flowable
para que suceda cuando se produzca una suscripción:
disposable.add( Flowable.defer(() -> presenter.getAllBooks()) // <---------------------- .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe({ println(it.size()) }) )
- Kotlin: ¿algún sustituto del object compañero dentro de otro object (no class)?
- lanzar si el operador en Kotlin