Вы можете создать объект пула AsyncTask, который позволит вам подделать «пакетный» http-вызов.
- создайте наблюдаемую коллекцию AsyncTasks, я буду называть эту коллекцию вашим пулом
- ваша активность создает AsyncTasks (но еще не выполняет) и добавляет их в пул
- Активность регистрируется как наблюдатель пула
- Активность указывает пулу на выполнение, в свою очередь вызовы пула выполняются для каждой из его задач
- Когда задачи завершаются (как для успешных, так и для неудачных), они сохраняют данные ответов в пуле, и пул помечает задачу как «завершенную»
- Как только все Задачи помечены как выполненные, Пул уведомляет об активности прослушивания.
Общая идея заключается в том, чтобы пул знал, сколько задач и ожиданий, и сохранял совокупные данные о завершенных вызовах. Как только все закончено, уведомите Наблюдающую активность и передайте обратно все данные.
Вам нужно будет выяснить, как AsyncTasks сообщают пулу, что они завершены. Может быть, просто есть реализация AsyncTask, которая принимает конструктор пула, чтобы задачи имели ссылку на пул.