Подтвердить что ты не робот

Параллельные HTTP-запросы с доработкой

У меня есть приложение для Android, которое в настоящее время использует библиотеку Volley для создания сетевых запросов и загрузки загруженных изображений с помощью NetworkImageView.

Я хотел бы протестировать возможности Retrofit, и поскольку мне нужно запустить много запросов (тысяч), я немного обеспокоен параллельным исполнением. Volley обрабатывает параллельные запросы с помощью RequestQueue, который ограничивает одновременные запросы на выполнение до четырех, в то время как остальные запросы находятся в очереди в ожидании для выполнения. В документах Retrofit я не нашел способ обрабатывать количество одновременных запросов, и я подозреваю, что такие детали оставлены разработчику в этой библиотеке.

Это правильно? Если да, существует ли какая-либо ориентированная на orroid реализация/библиотека? В противном случае, каковы наилучшие методы обработки параллельных запросов?

4b9b3361

Ответ 1

В дополнение к настройкам для запросов на очередность используется Executor.

По умолчанию используется Executors.newCachedThreadPool, который позволяет использовать неограниченные потоки. Это подходит для большинства случаев использования, так как обычно у вас будет только один или два запроса одновременно.

Однако вы можете изменить это поведение, предоставив свои собственные при построении RestAdapter. Вызовите setExecutors и передайте исполнителю, который использует ограниченный пул потоков (ограниченный любым количеством, которое вы хотели бы). Для второго аргумента просто передайте новый экземпляр MainThreadExecutor, чтобы обратные вызовы произошли в основном потоке.