Android время задержки в ответе сети - PullRequest
0 голосов
/ 27 ноября 2018

Я получаю данные для одной базы данных из двух разных сетевых вызовов.один ответ занимает 5 секунд, а другой - 15 секунд.Теперь условие состоит в том, что я могу представить данные пользователю только после того, как весь набор данных будет готов в моей памяти от обоих сетевых вызовов.Итак, 1) Как я могу справиться с этой (15-5 = 10сек) временной задержкой?2) Я должен был показать некоторые данные пользователю одновременно.Я не могу оставить их пустыми, пока в памяти не будет готов весь набор данных.

1 Ответ

0 голосов
/ 27 ноября 2018

С точки зрения UX - вы абсолютно правы, когда говорите, что вам следует показывать некоторые данные пользователю скорее, чем позже.Вы должны заполнить свой список результатов некоторыми данными, как только будет загружен первый запрос, и заполнить его дополнительными, как только будет решен второй.Вы наверняка хотите показать индикатор загрузки, пока идет загрузка!Хорошее объяснение показателей прогресса можно найти в Руководстве по проектированию материалов .

Я только что заметил, что вы пометили этот вопрос тегами retrofit и rx-java.Используя их, легко дождаться завершения обоих запросов и написать код, который будет выполняться позже.Вы можете использовать zip метод из RxJava.Zip примет несколько Observables и:

"вернет Observable, который применяет выбранную вами функцию к комбинации объектов, выпущенных, последовательно, двумя (или более)) другие Наблюдаемые, при этом результаты этой функции становятся элементами, испускаемыми возвращаемым Наблюдаемым. "

Предполагая, что у вас есть два базовых наблюдаемых объекта (по одному для каждого из ваших двух запросов), по завершении каждого изПосле этого вы заполняете свой набор данных (вероятно, Адаптер RecyclerView ?? ), и после того, как оба завершены (наблюдаемый zip), вы скрываете индикатор загрузки прогресса.

...