Ответ
Single и Observable — оба являются источниками данных в RxJava, но имеют ключевые различия:
-
Количество элементов
Singleиспускает ровно один элемент или ошибку.Observableможет испускать 0, 1 или множество элементов, включая ошибку/завершение.
- Операторы
Некоторые операторы (onNext,onComplete) недоступны вSingle, так как он завершается послеonSuccess/onError.
Пример:
// Single
Single.just("Hello")
.subscribe({ result -> println(result) }, { error -> println(error) })
// Observable
Observable.fromIterable(listOf(1, 2, 3))
.subscribe({ num -> println(num) }, { error -> println(error) })
Когда использовать:
Single— для запросов API (ответ или ошибка).Observable— для потоков данных (чаты, события UI).