Что выберешь для решения задачи RxJava или корутины

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

Ответ

Оба инструмента решают задачи асинхронности, но выбор зависит от контекста:

RxJava лучше подходит:

  • Для сложных потоков данных (например, комбинация нескольких источников)
  • Когда нужны мощные операторы (debounce, switchMap и т.д.)
  • В legacy-проектах с уже существующей Rx-инфраструктурой

Корутины предпочтительнее:

  • В новых проектах (официальная рекомендация Google)
  • Для простых асинхронных операций (запросы в сеть, БД)
  • Когда важна читаемость (последовательный код вместо цепочек)

Пример корутин:

viewModelScope.launch {
    val data = repository.fetchData() // suspend-функция
    updateUi(data)
}