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

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

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

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

3 ответа

Решение

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

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

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

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

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

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

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

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

Другие вопросы по тегам