Я обертываю API обратного вызова пользовательской библиотеки (dataClient
) в RxJava Flowable.dataClient
использует свой собственный поток, поэтому его обратный вызов вызывается в своем собственном потоке.
В моей цепочке Rx я пытаюсь указать планировщик вычислений, используя .subscribeOn(Schedulers.computation())
.Тем не менее, когда я печатаю имя нити в моей цепочке Rx, я получаю мою dataClient
нить.
Что я должен сделать, чтобы мой Flowable использовал нить, указанную в .subscribeOn()
?
Flowable.create({ emitter ->
dataClient.setCallback(object : Callback {
override fun message(message: DataModel) {
emitter.onNext(vehicle)
}
override fun done() {
emitter.onComplete()
}
})
emitter.setCancellable {
dataClient.setCallback(null)
}
}, BackpressureStrategy.BUFFER)
.subscribeOn(Schedulers.computation())
.doOnNext { Log.e("DATA", Thread.currentThread().name) }
.observeOn(AndroidSchedulers.mainThread())
.subscribe { data -> Log.d("DATA", "Got data" + data.id)) }