Android: несколько intentservices или один intenservice с несколькими намерениями?

Я немного запутался в намерении службы. Документы говорят, что если вы отправляете намерениеУслуги несколько задач (намерений), то они будут выполнять их один за другим в одном отдельном потоке. Мой вопрос: возможно ли одновременное использование нескольких цепочек намерений? Как вы дифференцируетесь в коде между созданием трех разных намерений в одном и том же намерении (один и тот же поток) или тремя отдельными службами намерений, каждый из которых имеет собственный поток и один намерение выполнить каждый?

Другими словами, когда вы выполняете команду startService (намерение), вы помещаете намерение в одну очередь или каждый раз запускаете новую очередь?

Intent someIntent1 = new Intent(this, myIntentService.class);
Intent someIntent2 = new Intent(this, myIntentService.class);
Intent someIntent3 = new Intent(this, myIntentService.class);
startService(someIntent1);
startService(someIntent2);
startService(someIntent3);

Ответ 1

1) Возможно ли одновременное использование нескольких потоков намерений?

Нет, каждый IntentService имеет только HandlerThread, который он использует для выполнения запросов в том порядке, в котором вызывается "startService". Если по какой-то причине вы не решите создать свою собственную Thread/Threads в IntentService, но это, скорее всего, превзойдет цель использования IntentService. Службы той же декларации манифеста, т.е. Службы name= ". MyIntentService" (и это то же самое для обычных служб), выполняются как однотонные в рамках их процесса, поэтому пока Служба не будет убита, Служба будет получать дополнительные стартовые запросы.

2) Как вы различаете код между созданием трех разных намерений в одном и том же IntentService?

Чтобы различать запросы, используйте систему Intent по своему усмотрению! Предоставляйте разные "действия" для разных заданий, которые может выполнять служба, и передавайте любые дополнительные функции, которые IntentService должен выполнить правильно для этого конкретного задания в качестве дополнительных объектов в объекте Intent, который вы используете для запуска Сервиса.