Более одного рабочего потока с тем же приоритетом, что и IntentService? - PullRequest
3 голосов
/ 24 августа 2010

Итак, насколько я знаю, если я сделаю AsyncTask внутри Activity, задание может быть убито, когда пользователь выйдет из Activity до его завершения.Одно из решений, которое я видел, - это использование IntentService, которое система будет стараться не убивать.

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

Как мне это сделать?Я думаю, у меня может быть несколько IntentService, но это кажется неудобным и не масштабируемым.Как мне поддерживать пул потоков с хорошим приоритетом, чтобы система не могла его легко уничтожить?

Если я запускаю (обычный) Service, то запускаю AsyncTask s там, это приводит к более высокому приоритету?

Большое спасибо.

1 Ответ

1 голос
/ 24 августа 2010

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

Для второй половины вашего вопроса.Запуск службы и запуск AsyncTask s оттуда не приведут к какому-либо более высокому приоритету.Это связано с тем, что AsyncTask должен запускаться в потоке пользовательского интерфейса (то же самое, если он запускается с уровня активности или уровня обслуживания)

Если вы работаете с несколькими сетевыми потоками, ПОЖАЛУЙСТА, ОСТАНОВИТЕ его действительно плохую практику и расходует много энергии аккумулятора,Вам лучше запускать их по одному.

...