Помещается ли намерение в очередь при многократном вызове startService для IntentService?

Я хочу скачать из Интернета с IntentService. Я передаю URL-адрес через Intent в IntentService, вызывая startService(intentserive);.

Если я вызову startService для различных намерений, пойдут ли намерения в очередь на загрузку?


person user3900720    schedule 08.02.2015    source источник


Ответы (2)


Краткий ответ на ваш вопрос - ДА. Из документов:

IntentService — это базовый класс для служб, которые обрабатывают асинхронные запросы (выраженные как намерения) по требованию. Клиенты отправляют запросы через вызовы startService(Intent); служба запускается по мере необходимости, обрабатывает каждое намерение по очереди, используя рабочий поток, и останавливается, когда заканчивается работа.

Этот шаблон «процессор рабочей очереди» обычно используется для выгрузки задач из основного потока приложения. Класс IntentService существует, чтобы упростить этот шаблон и позаботиться о механике. Чтобы использовать его, расширьте IntentService и реализуйте onHandleIntent(Intent). IntentService получит намерения, запустит рабочий поток и при необходимости остановит службу.

Все запросы обрабатываются в одном рабочем потоке — они могут занимать столько времени, сколько необходимо (и не будут блокировать основной цикл приложения), но одновременно будет обрабатываться только один запрос.

Ссылка на официальную документацию

person Manish Kumar    schedule 08.02.2015

Да. Служба намерений ставит в очередь все рабочие намерения и обрабатывает их одно за другим в одном рабочем потоке.

person maveroid    schedule 08.02.2015