3

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

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

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

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

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

ответ

1

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

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

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

Смежные вопросы