Sobes.tech
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 и по-нови версии, услугата, работеща във фонов режим без видима активност на потребителя или видима услуга, ще бъде ограничена от системата по отношение на достъпа до ресурси и възможността за дългосрочна работа.