Поддерживает ли 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 работает хорошо.
Я рекомендую запустить один сервис и иметь много потоков, а не несколько сервисов.