Как бы отправлял запросы по одному или сразу

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

Ответ

Для эффективной работы с сетью лучше использовать batch-запросы, когда это возможно. Они уменьшают накладные расходы на установку соединения и ускоряют обработку. Однако иногда нужны последовательные запросы (например, когда второй зависит от результата первого).

Пример с Retrofit:

// Параллельные запросы
val call1 = api.getUser()
val call2 = api.getPosts()
CoroutineScope(Dispatchers.IO).launch {
    val (user, posts) = awaitAll(call1, call2)
    // Обработка данных
}

// Последовательные запросы
viewModelScope.launch {
    val user = api.getUser()  // Ждём завершения
    val posts = api.getPosts(user.id)  // Зависит от user
}

Выбор зависит от контекста:

  • Параллельно – для независимых данных
  • Последовательно – для зависимых данных или ограниченного API