У меня есть сценарий, в котором мне нужно будет сделать шесть HTTP-вызовов моему серверу, чтобы получить данные для шести разных элементов. Эти серверные вызовы нельзя комбинировать, и они предназначены для этого. Например: если вам нужна информация о цитате для GOOGLE, отправьте запрос на сервер с запросом информации о цитате Google. Затем, если вам нужен Yahoo, вы инициируете еще один http-вызов и так далее.
Вот ситуация:
- Теперь мой конечный пользователь хочет сравнить 6 разных компаний.
- Как я уже упоминал, мне нельзя избежать 6 HTTP-вызовов, для которых я использую 6 асинхронных задач.
- Когда я получаю каждый ответ задачи Async, я обновляю пользовательский интерфейс новыми данными.
- Если я обновляю интерфейс 6 раз за очень короткий промежуток времени, это плохо.
- Это создает эффект мерцания для моего пользовательского интерфейса, что нежелательно.
Мой вопрос:
- Как я могу отложить обновление пользовательского интерфейса до тех пор, пока я не получу все 6 ответов асинхронной задачи?
- Я понимаю, что каждая задача не зависит друг от друга. Должен ли я запустить цикл while и подождать, пока я получу все ответы?
- Есть ли лучший способ сделать это, чем цикл while, потому что, если какой-либо из вызовов не отвечает, я застряну в ожидании навсегда.
Примечание: я полагаю, что Android 1.6+ действительно выполняет асинхронные задачи параллельно.
Это скорее вопрос дизайна, и я был бы признателен за любую помощь в этом вопросе.
Заранее спасибо
задан AKh 9 January 2013 в 01:03
поделиться