Как Дейв уже указал , вы можете запустить свой Service
с приоритетом переднего плана. Но эту практику следует использовать только тогда, когда это абсолютно необходимо, т. Е. Когда это приведет к плохому пользовательскому опыту, если Сервис будет убит Android. Вот что на самом деле означает «передний план»: ваше приложение каким-то образом находится на переднем плане, и пользователь сразу же заметит его, если его убьют (например, потому что он воспроизвел песню или видео).
В большинстве случаев запрос приоритетного приоритета для вашего Сервиса является контрпродуктивным!
Почему это? Когда Android решает убить Service
, это происходит потому, что ему не хватает ресурсов (обычно ОЗУ). Основываясь на различных классах приоритетов, Android решает, какие запущенные процессы, включая сервисы, завершить, чтобы освободить ресурсы. Это здоровый процесс, который вы хотите осуществить, чтобы у пользователя было приятное впечатление. Если вы запросите приоритет переднего плана, без веской причины, просто чтобы убить ваш сервис, это, скорее всего, вызовет плохой пользовательский опыт. Или вы можете гарантировать, что ваш сервис останется в пределах минимального потребления ресурсов и не будет иметь утечек памяти? 1
Android предоставляет липкие сервисы , чтобы помечать сервисы, которые должны быть перезапущены после некоторого льготного периода, если они были убиты. Этот перезапуск обычно происходит в течение нескольких секунд.
Изображение, которое вы хотите написать XMPP-клиент для Android. Стоит ли запрашивать приоритет переднего плана для Service
, который содержит ваше XMPP-соединение? Определенно нет, нет абсолютно никаких причин для этого. Но вы хотите использовать START_STICKY
в качестве флага возврата для метода onStartCommand
вашего сервиса. Так что ваш сервис останавливается, когда возникает нехватка ресурсов, и перезапускается, когда ситуация возвращается к нормальной.
1 : Я почти уверен, что многие приложения для Android имеют утечки памяти. Это то, о чем не заботится обычный (настольный) программист.