Если вы хотите выполнить операцию с каждым элементом списка, вам скорее всего понадобится Observable
.A Single
, как следует из его названия, предназначен для одного выброса.
Обратите внимание на следующее:
List<String> items = new ArrayList<>(10);
// lets say this array list is already populated
Observable.fromIterable(items)
// the map operator handles each emission individually
.map(String::length)
.subscribe(System.out::println);
Если бы вместо этого мы использовали Single
, это выглядело бы как:
Single.just(items)
.toObservable()
.flatMapIterable(strings -> strings)
.map(String::length)
.subscribe(System.out::println);
Здесь вы можете видеть, что у нас есть единичное излучение items
, но для обработки каждой строки в списке нам необходимо преобразовать ее в наблюдаемую и плоскую карту в этом списке, поэтому мыполучить каждый элемент списка в отдельности.По сути, это всего лишь грубая версия использования Observable
напрямую
Теперь, если мы расширим это до получения пакетов данных (в группах по 10), будут применяться те же принципы.Это зависит от того, как вы извлекаете эти пакеты, чтобы точно сказать, каким образом это может привести к созданию Observable
.