Как бы организовал отправку данных

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

Ответ

Для отправки данных в Android обычно используем:

  1. Retrofit для HTTP-запросов (REST API):
interface ApiService {
    @POST("endpoint")
    suspend fun sendData(@Body data: DataModel): Response<ApiResponse>
}

// Использование:
val retrofit = Retrofit.Builder()
    .baseUrl(BASE_URL)
    .addConverterFactory(GsonConverterFactory.create())
    .build()

val response = retrofit.create(ApiService::class.java)
    .sendData(data)
  1. WorkManager для надежной фоновой отправки:
val workRequest = OneTimeWorkRequestBuilder<UploadWorker>()
    .setConstraints(Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build())
    .build()

WorkManager.getInstance(context).enqueue(workRequest)
  1. Room + WorkManager для офлайн-работы - сохраняем данные локально и синхронизируем при подключении.

Ключевые моменты:

  • Используем корутины/Flow для асинхронности
  • Добавляем обработку ошибок и повторы
  • Реализуем прогресс отправки
  • Оптимизируем размер данных (gzip, protobuf)