Как эффективно управлять несколькими асинхронными задачами в Android

У меня есть сценарий, в котором мне нужно будет сделать шесть HTTP-вызовов моему серверу, чтобы получить данные для шести разных элементов. Эти серверные вызовы нельзя комбинировать, и они предназначены для этого. Например: если вам нужна информация о цитате для GOOGLE, отправьте запрос на сервер с запросом информации о цитате Google. Затем, если вам нужен Yahoo, вы инициируете еще один http-вызов и так далее.

Вот ситуация:

  1. Теперь мой конечный пользователь хочет сравнить 6 разных компаний.
  2. Как я уже упоминал, мне нельзя избежать 6 HTTP-вызовов, для которых я использую 6 асинхронных задач.
  3. Когда я получаю каждый ответ задачи Async, я обновляю пользовательский интерфейс новыми данными.
  4. Если я обновляю интерфейс 6 раз за очень короткий промежуток времени, это плохо.
  5. Это создает эффект мерцания для моего пользовательского интерфейса, что нежелательно.

Мой вопрос:

  1. Как я могу отложить обновление пользовательского интерфейса до тех пор, пока я не получу все 6 ответов асинхронной задачи?
  2. Я понимаю, что каждая задача не зависит друг от друга. Должен ли я запустить цикл while и подождать, пока я получу все ответы?
  3. Есть ли лучший способ сделать это, чем цикл while, потому что, если какой-либо из вызовов не отвечает, я застряну в ожидании навсегда.

Примечание: я полагаю, что Android 1.6+ действительно выполняет асинхронные задачи параллельно.

Это скорее вопрос дизайна, и я был бы признателен за любую помощь в этом вопросе.

Заранее спасибо

12
задан AKh 9 January 2013 в 01:03
поделиться