Ответ
Корутины проще в использовании и читаемости кода. Они интегрированы в 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