Для чего нужен Scheduler в RxJava

«Для чего нужен Scheduler в RxJava» — вопрос из категории Реактивное программирование, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Scheduler в RxJava управляет потоками выполнения операторов. Он определяет, в каком потоке будут выполняться подписка (subscribeOn) и обработка событий (observeOn).

Ключевые моменты:

  • subscribeOn задает поток для источника (если не указан, выполняется в текущем потоке).
  • observeOn переключает поток для последующих операторов.

Пример:

Observable.just("Task")
    .subscribeOn(Schedulers.io()) // Выполняется в IO-потоке
    .map { it.length } 
    .observeOn(AndroidSchedulers.mainThread()) // Результат в UI-потоке
    .subscribe { length -> textView.text = "Length: $length" }

Популярные Schedulers:

  • Schedulers.io() — для I/O операций.
  • Schedulers.computation() — для CPU-интенсивных задач.
  • AndroidSchedulers.mainThread() — главный поток Android.