И блок Observable.create, и обработчик subscribe выполнятся в главном потоке. В приведённой цепочке нет оператора, который переключает Scheduler.
Определение, на каком потоке работают create и subscribe в RxJava
И блок Observable.create, и обработчик subscribe выполнятся в главном потоке. В приведённой цепочке нет оператора, который переключает Scheduler.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Нужно установить, в каком потоке будет выполнен оператор create и обработчик subscribe, если данный фрагмент кода запускается из главного (UI) потока.
Observable.create<Int> {
it.onNext(0)
}
.subscribe {
println(it)
}
Ответ
И блок Observable.create, и обработчик subscribe выполнятся в главном потоке. В приведённой цепочке нет оператора, который переключает Scheduler.
Подписка синхронно вызывает источник, источник сразу отправляет onNext(0), и println печатает 0 на том же потоке. Само слово Observable не означает фоновую работу. В коде также нет onComplete: это не мешает получить значение, но источник не сообщает о нормальном завершении.
Источник: reactivex.io.