Проверяет умение назначать правильный контекст выполнения для потоков данных.
Для обновления UI при сборе Flow выбирают Dispatchers.Main, чтобы безопасно работать с элементами интерфейса. Для фоновых задач (сеть, база данных, вычисления) используют Dispatchers.IO или Dispatchers.Default соответственно. Рекомендуется переключаться контекст в середине цепочки через оператор flowOn.
UI:
Сбор в lifecycleScope.launch(Dispatchers.Main) или оператор collectLatest { … }.
I/O-операции:
Использовать withContext(Dispatchers.IO) внутри map, flatMapConcat или flowOn(Dispatchers.IO).
CPU-нагрузка:
Для тяжёлых вычислений — Dispatchers.Default.
Пример:
repository.getDataFlow()
.flowOn(Dispatchers.IO) // upstream (fetch) на IO
.map { transform(it) }
.flowOn(Dispatchers.Default) // compute на Default
.onEach { viewState.value = it }
.launchIn(viewModelScope) // collect на Main