2014-11-07 2 views
0

Предположим, у меня есть ситуация, когда ответ API заполняет мою модель Музыканта информацией, специфичной для этого музыканта. Существует еще один ответ API, который, учитывая имя музыканта, описывает связанных художников.Зависит от намерения по двум вызовам API?

Я хочу запустить подробный вид деятельности, в котором будут указаны имя, участники, жанр, альбомы (API-ответ A) и связанные с ними исполнители (ответ API В).

Асинхронный сетевой вызов обеспечит лучшее взаимодействие с пользователем, но поскольку запуск активности детали зависит от двух разных вызовов api, есть ли лучшее решение, чем вызов API, асинхронный и вызов API B будет синхронизироваться (блокировка A и пользовательский интерфейс)?

Если я выполняю оба асинхронных вызова, API-вызов B может работать при изменении активности, останавливая его (поскольку асинтеза уничтожается при изменении активности). Это приведет к отсутствию данных в детализации.

ответ

0

В простом случае:

  1. Начало детали деятельности
  2. Выполнить оба запроса асинхронно, представляя пользователю с нагрузочной UX
  3. После извлекается, обновление пользовательского интерфейса соответственно
    • You может изменить макет Activity в любое время во время выполнения без его воссоздания.
    • Вы можете либо сразу обновить интерфейс с помощью «Ответ A», а затем снова с ответом «B» или дождаться возврата обоих ответов, а затем обновить интерфейс; первый предпочтительнее.

операции Сеть должна никогда блокировать интерфейс или пользователя. Отображение загрузочных роликов и т. Д. Вполне приемлемо и используется постоянно в собственных приложениях Google.

Смежные вопросы