Доброго времени суток! Работая над одним проектом, обнаружил, что через связку retrofit2 и retrofit2 adapter-rxjava нельзя реализовать batch loading в одном потоке.
Приведу пример. Имеем описание retrofit-сервиса:
interface Api {
@GET("query.json")
Observable<List<SomeEntityServerView>> getAll(
@Query("first") int first,
@Query("max") int batchSize);
}
Загрузка одного пакета:
service.getAll(0,20).map(list -> ...).observeOn(...).subscribe(...);
Для загрузки всех сущностей с сервера, нам придется каждый раз создавать новый observable для загрузки очередного пакета. Кроме того, как запихнуть все эти observable'ы в один поток, представляется крайне сложным.
Для решения это проблемы, предлагаю достаточно простой подход.
Читать полностью »