Несколько IntentService или одна служба

Я немного смущен различием между IntentService и сервисом. Я понимаю, что IntentService имеет рабочую очередь, но есть ли какая-либо польза от использования нескольких IntentService над одной службой?

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

Solutions Collecting From Web of "Несколько IntentService или одна служба"

IntentService – это просто удобный класс для написания услуг, которые являются рабочими в структуре производителя-потребителя. Это службы, предназначенные для выполнения различных задач подряд, а затем останавливаются. Услуги не обязательно являются IntentServices, такими как службы, которые должны оставаться в живых, например, демоны.

Поэтому вам следует задаться вопросом, близко ли вы к рабочему потоку, если это так, используйте IntentServices else, только что полученный из Сервиса.

Ваши второстепенные вопросы заключались в том, следует ли группировать все 3 службы в службе 3 в 1. Ответ заключается в том, что это зависит от того, как вы используете ваши источники данных: если вы используете их в целом, а затем группируйте их в одну службу. Если они используются отдельно, вы можете создать сервис для каждого с надеждой предоставить более легкую услугу, если используется только один источник данных, а не другой. Но если вы используете все 3 источника данных, каждый в службе, то он будет тяжелее, чем использование одной службы.

Его понимание того, что разница между intentService и Service заключается в том, что намерениеService будет порождать рабочий поток для его запуска, в то время как служба запускается в основном потоке своего хостинга. Кроме того, намерение службы остановится, когда работа будет выполнена, в то время как служба продолжит работу до тех пор, пока не будет вызвана остановка или остановка службы.

Если 3 источникам данных необходимо обмениваться информацией друг с другом, тогда все они помещаются в одну и ту же Службу, в противном случае они будут разделены, потому что, если один источник данных выключен, это приведет к запуску жирной службы, а не только одной световой службы.

Чтобы позволить нескольким задачам запускаться одновременно с основным потоком, вам необходимо предоставить управляемую коллекцию потоков. Используйте ThreadPoolExecutor для управления несколькими потоками одновременно:

http://developer.android.com/training/multiple-threads/create-threadpool.html