Intern
Каква е разликата между фоновата услуга и фоновата услуга в Android?
sobes.tech AI
Отговор от AI
Разликата между обикновена фоновата услуга и ограничената (restricted) фоновата услуга се появи с Android 8.0 (API 26).
Обикновена фоновата услуга:
- Може да работи неограничено време във фонов режим.
- Системата може да я спре при недостиг на ресурси, но тя може да бъде рестартирана, ако в
onStartCommand()се върнеSTART_STICKY. - Не изисква видими уведомления за потребителя (макар че това не е най-добрата практика от UX гледна точка).
- Може да консумира значителни ресурси на батерията и CPU.
Ограничената фоновата услуга (прилага се ограничения):
- Услуга, стартирана във фонов режим без видими активности или други "бели списъци" (привилегировани условия), среща ограничения в използването на ресурси.
- Основните ограничения включват:
- Ограничение за работа във фонов режим: Системата може да я спре за кратко време (обикновено няколко минути) след като приложението премине във фонов режим.
- Забрана за стартиране на нови фонови услуги: Фоновото приложение не може да стартира нови фонови услуги с
startService(). Вместо това трябва да използваJobSchedulerилиWorkManager. - Ограничение за получаване на широковещателни съобщения: Имплицитните широковещателни съобщения в манифеста ще бъдат игнорирани. Приложението трябва ясно да регистрира приемници или да използва
JobScheduler/WorkManagerза обработка на събития.
- Целта на тези ограничения е да подобри живота на батерията и производителността на устройството, като ограничи ирационалната употреба на ресурси от фоновите приложения.
Как става услугата неограничена (активна според системата):
- Приложението е на преден план (потребителят активно взаимодейства с него).
- Приложението стартира видима услуга (foreground service), която показва постоянна известие на потребителя.
- Приложението изпълнява определени задачи (например обработка на широковещателни съобщения, изпълнение на задачи
JobScheduler), които временно го изваждат от състоянието на пълна ирационална работа във фонов режим.
Основна разлика: С Android 8.0 и по-нови версии, услугата, работеща във фонов режим без видима активност на потребителя или видима услуга, ще бъде ограничена от системата по отношение на достъпа до ресурси и възможността за дългосрочна работа.