Как будешь работать с параллельными запросами

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

Ответ

Для работы с параллельными запросами в Android можно использовать Kotlin Coroutines или RxJava.

Kotlin Coroutines:

val deferred1 = async { fetchData1() }
val deferred2 = async { fetchData2() }
val result1 = deferred1.await()
val result2 = deferred2.await()

RxJava:

Observable.zip(
    fetchData1Observable(),
    fetchData2Observable(),
    BiFunction { data1, data2 -> Pair(data1, data2) }
).subscribe { (data1, data2) -> /* handle result */ }

Нюансы:

  • Учитывайте отмену корутин при onCleared() в ViewModel.
  • Обрабатывайте ошибки через try-catch или onError в RxJava.
  • Для сетевых запросов используйте Dispatcher.IO.
  • Избегайте блокировки UI-потока.