Ответ
Метод subscribeOn в RxJava определяет, на каком потоке будет выполняться подписка и обработка данных в цепочке операторов. Он влияет на весь пайплайн до первого вызова observeOn.
Особенности:
- Работает "снизу вверх" – влияет на все операторы выше
- Если вызван несколько раз – учитывается первый вызов
- По умолчанию подписка происходит на текущем потоке
Пример:
Observable.just(1, 2, 3)
.subscribeOn(Schedulers.io()) // Запуск на IO-потоке
.map { it * 2 } // Выполняется на IO
.observeOn(AndroidSchedulers.mainThread())
.subscribe { /* UI-поток */ }
Используется для выноса тяжелых операций (сеть, БД) с главного потока.