Почему для Room или Retrofit легче использовать Single

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

Ответ

Room и Retrofit возвращают Single (из RxJava), потому что они работают с асинхронными операциями, которые выполняются один раз и завершаются либо успехом, либо ошибкой.

Преимущества:

  • Single идеально подходит для операций, которые возвращают один результат (например, запрос к API или запрос в БД).
  • Упрощает обработку ошибок через onError.
  • Четко выражает намерение: операция выполняется один раз, без потоков данных.

Пример с Retrofit:

interface ApiService {
    @GET("user/{id}")
    fun getUser(@Path("id") id: Long): Single<User>
}

// Использование
apiService.getUser(1)
    .subscribe({ user -> showUser(user) }, { error -> showError(error) })

Single лаконичнее Observable для однократных операций и не перегружает код лишней семантикой.