Поддерживает ли Android несколько HTTP-запросов одновременно? - PullRequest
15 голосов
/ 21 сентября 2011

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

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

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

Ответы [ 3 ]

19 голосов
/ 21 сентября 2011

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

Возможно, вы также захотите взглянуть на ExecutorService: http://developer.android.com/reference/java/util/concurrent/ExecutorService.html

5 голосов
/ 07 февраля 2012

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

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

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

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

0 голосов
/ 21 сентября 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...