Поддерживает ли Android одновременно несколько HTTP-запросов?

В моем приложении я хотел бы обрабатывать одновременную загрузку нескольких файлов. Для этого я запускаю несколько сервисов, по одному для каждого запроса. Как я не уверен, поддерживает ли Android одновременные запросы HTTP параллельно?

В этом случае хорошая или плохая привычка иметь один HTTPClient для запроса?

Большое спасибо за вашу помощь!

Ответы

Ответ 1

HttpClient не является асинхронным и не поддерживает параллельные соединения как таковые. Вы можете иметь несколько потоков, каждый из которых выполняет загрузку с отдельными экземплярами HttpClient.

Вы также можете посмотреть ExecutorService: http://developer.android.com/reference/java/util/concurrent/ExecutorService.html

Ответ 2

При использовании менеджера объединения пулов, такого как ThreadSafeClientConnManager, HttpClient может использоваться для одновременного выполнения нескольких запросов с использованием нескольких потоков выполнение.

Вот полный пример того, как его использовать: 2.9. Выполнение многопоточного запроса.

Обновление: потребовалось некоторое время, но ThreadSafeClientConnManager теперь устарел (см. выдержку ниже из Удаление Apache Http Client):

В выпуске Android 6.0 удаляется поддержка HTTP-клиента Apache. Если ваше приложение использует этот клиент и предназначено для Android 2.3 (уровень API 9) или выше, вместо этого используйте класс HttpURLConnection. Этот API более эффективен, поскольку он снижает использование сети благодаря прозрачному кешированию сжатия и ответа и минимизирует потребление энергии.

Ответ 3

Проведите некоторое тестирование, чтобы определить, сколько одновременных HTTPRequests работает хорошо.

Я рекомендую запустить один сервис и иметь много потоков, а не несколько сервисов.