Определение потока выполнения subscribeOn в RxJava
Блок create выполнится на scheduler Schedulers.io(), а не на UI-потоке. Обработчик subscribe в этом примере не вызовется: источник не отправляет элементы.
Читать ответПодготовка к интервью
50 вопросов по RxJava с технических собеседований
Что проверяют на интервью
На странице собраны вопросы по RxJava — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: rxjava, coroutines, android.
Каталог
Блок create выполнится на scheduler Schedulers.io(), а не на UI-потоке. Обработчик subscribe в этом примере не вызовется: источник не отправляет элементы.
Читать ответcreate запускается на io, но оба map и обработчик subscribe в данном коде не выполняются: источник пустой и ничего не эмитит. Потоки этих обработчиков имеют смысл только после onNext.
Читать ответshowProgress в doOnSubscribe выполнится на Schedulers.io(). Нижний subscribeOn(io) планирует подписку на участок цепочки, в котором расположен этот callback.
Читать ответРезультат не гарантирован: flatMapSingle может собрать заказы в порядке завершения запросов, а не исходных ID. Сравнение способно вернуть true или false; обычный main может завершиться до вывода.
Читать ответДля немедленной реакции на первый клик и игнорирования следующих в течение окна подходит throttleFirst. debounce решает другую задачу: ждёт паузы в потоке.
Читать ответБлок create выполнится на UI-потоке. Обработчик subscribe в данном примере вообще не вызовется, потому что источник не отправляет ни одного onNext.
Читать ответЭмиссия just и map будут выполняться на io; конечный subscribe — на computation. Из двух subscribeOn источник определяет ближайший к нему, а последний observeOn задаёт поток ниже себя.
Читать ответОбработчик onSuccess будет вызван на Schedulers.computation(), поскольку перед subscribe стоит observeOn(computation). subscribeOn(io) задаёт подписку на источник, а не конечный UI-поток.
Читать ответПри нормальном выполнении flatMap выдаст dx, cx, bx, ax; switchMap — только dx; concatMap — ax, bx, cx, dx. Для каждого варианта counter нужно заново установить в 4.
Читать ответЛямбда flatMap, вызывающая getCity(), выполнится на Schedulers.computation(): непосредственно перед ней стоит observeOn(computation). Последующий subscribeOn(io) это не переопределяет.
Читать ответИ блок Observable.create, и обработчик subscribe выполнятся в главном потоке. В приведённой цепочке нет оператора, который переключает Scheduler.
Читать ответОбъедините потоки кликов и используйте switchMap: новый элемент снимает подписку с предыдущего сетевого источника. Реальная отмена HTTP требует поддержки отмены в сетевом адаптере.
Читать ответ