Начиная с API 11 и выше, хорошим подходом является использование FixedThreadPool с асинхронными задачами. Сделать один раз:
ExecutorService threadPoolExecutor = Executors.newFixedThreadPool(3);
Где 3 - количество загрузок, которые вы хотите запустить одновременно. Он поставит задачу в очередь, если уже запущено 3 загрузки, и автоматически выполнит задачу позже.
Запустите асинхронные задачи с помощью:
yourAsynTask.executeOnExecutor(threadPoolExecutor, params);
Возможно, Params - это URL, к которому вы хотите подключиться. Вы можете прочитать его в onPostExecute вашей асинхронной задачи и подключиться к серверу, используя HttpURLConnection .
Убедитесь, что вы вызвали это при выключении:
threadPoolExecutor.shutdown()