Ответ
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 для однократных операций и не перегружает код лишней семантикой.