Скачать очередь в Android - PullRequest
       34

Скачать очередь в Android

8 голосов
/ 02 декабря 2010

Как лучше всего реализовать очередь загрузки в Android?

Я подозреваю, что могут быть некоторые классы платформы, которые могут выполнять большую часть работы.

Ответы [ 4 ]

17 голосов
/ 02 декабря 2010

Какой лучший способ реализовать очередь загрузки в Android?

Использовать IntentService.Он предоставляет очередь и фоновый поток для вас, поэтому все, что вам нужно сделать, это поместить вашу логику загрузки в onHandleIntent(). Смотрите здесь пример проекта , демонстрирующий это.

2 голосов
/ 10 марта 2011

Использование IntentService затруднит поддержку отмены. Это просто то, что вам нужно знать. Если вы можете, это API уровня 9, вам будет лучше использовать http://developer.android.com/reference/android/app/DownloadManager.html

2 голосов
/ 02 декабря 2010

Я бы посоветовал взглянуть на пакет java.util.concurrent и, в частности, прочитать о Executors

Вы можете создать ExecutorService, который будет одновременно запускать только n объектов Runnable и автоматически ставить в очередь остальные задачи. Как только один из выполняемых потоков завершает выполнение, он забирает следующий объект Runnable в очереди для выполнения.

1 голос
/ 13 августа 2012

Начиная с API 11 и выше, хорошим подходом является использование FixedThreadPool с асинхронными задачами.Выполните один раз:

ExecutorService threadPoolExecutor = Executors.newFixedThreadPool(3);

Где 3 - количество загрузок, которые вы хотите запустить одновременно.Он поставит задачу в очередь, если уже запущено 3 загрузки, и автоматически выполнит задачу позже.Запустите асинхронные задачи с помощью:

yourAsynTask.executeOnExecutor(threadPoolExecutor, params);

Params - это, вероятно, URL, к которому вы хотите подключиться.Вы можете прочитать его в onPostExecute вашей асинхронной задачи и подключиться к серверу, используя HttpURLConnection .

Убедитесь, что вы вызвали это при завершении работы:

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