После копания в потоках RxJava за последние два дня было найдено правило для обработки потоков RxJava:
observeOn
работает только для нижестоящего оператора subscribeOn
работает дляоператоры как нисходящего, так и обратного потоков - Последовательный / Множественный
subscribeOn
не меняют поток - Последовательный
observeOn
меняет поток для нижестоящего аппарата - В отличие от
subscribeOn()
, мы можем использовать observeOn()
несколько раз для бесшовного переключения потоков - Оператор типа
delay()
, interval()
имеет планировщик по умолчанию и может также изменять планировщик нисходящего потока
Итак, для моего случая:
Completable.complete() // IO scheduler based on subscribeOn scheduler
.subscribeOn(http://Schedulers.io ())
.observeOn(AndroidSchedulers.mainThread())
.delay(5000, TimeUnit.MILLISECONDS) // Default Computation scheduler
.doOnComplete(() -> liveDataState.postValue("")) // Computation scheduler by delay scheduler
.subscribe() // Computation scheduler by delay as well
Кроме того, вы можете посмотреть на мраморную диаграмму для большего понимания: