Почему решили перейти на корутины с RxJava в проекте

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

Ответ

Корутины проще в использовании и читаемости кода. Они интегрированы в Kotlin и требуют меньше бойлерплейта по сравнению с RxJava. Например, замена цепочки Rx-операторов на последовательные вызовы suspend-функций:

// RxJava
Observable.fromCallable { fetchData() }
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe { showData(it) }

// Coroutines
lifecycleScope.launch {
    val data = withContext(Dispatchers.IO) { fetchData() }
    showData(data) // автоматически на Main
}

Также корутины:

  • Лучше работают с Jetpack компонентами (ViewModel, LiveData)
  • Имеют более предсказуемую отмену через Job
  • Потребляют меньше памяти
  • Поддерживают structured concurrency