Sobes.tech
Intern

Jaký je rozdíl mezi službou na pozadí a službou na pozadí v Androidu?

sobes.tech AI

Odpověď od AI

Rozdíl mezi běžnou službou na pozadí a omezenou (restricted) službou na pozadí se objevil s Androidem 8.0 (API 26).

Běžná služba na pozadí:

  • Může běžet neomezeně v pozadí.
  • Systém ji může ukončit při nedostatku zdrojů, ale může být znovu spuštěna, pokud je v onStartCommand() vráceno START_STICKY.
  • Nevyžaduje viditelná oznámení pro uživatele (ačkoliv to není nejlepší praxí z UX hlediska).
  • Může spotřebovávat významné zdroje baterie a CPU.

Omezená služba na pozadí (platí omezení):

  • Služba spuštěná na pozadí bez viditelných aktivit nebo jiných "bílých seznamů" (privilegovaných podmínek) čelí omezením využití zdrojů.
  • Hlavní omezení zahrnují:
    • Omezení práce na pozadí: Systém může službu zastavit během krátké doby (obvykle několik minut) poté, co aplikace přejde na pozadí.
    • Zákaz spouštění nových služeb na pozadí: Aplikace na pozadí nemůže spouštět nové služby na pozadí pomocí startService(). Místo toho by měla používat JobScheduler nebo WorkManager.
    • Omezení přijímání broadcast zpráv: Implicitní broadcasty v manifestu budou ignorovány. Aplikace musí explicitně registrovat broadcast přijímače nebo používat JobScheduler/WorkManager pro zpracování událostí.
  • Cílem těchto omezení je zlepšit výdrž baterie a výkon zařízení tím, že omezí irracionální využívání zdrojů na pozadí.

Jak se služba stává neomezenou (aktivní z pohledu systému):

  • Aplikace je na přední vrstvě (uživatel s ní aktivně interaguje).
  • Aplikace spouští viditelnou službu (foreground service), která zobrazuje trvalé oznámení uživateli.
  • Aplikace vykonává určité úkoly (například zpracování broadcast zpráv, provádění úkolů JobScheduler), které ji dočasně vytahují z úplného irracionálního stavu práce na pozadí.

Hlavní rozdíl: S Androidem 8.0 a novějšími verzemi bude služba běžící na pozadí bez viditelné aktivity uživatele nebo viditelné služby omezena systémem z hlediska přístupu k zdrojům a možnosti dlouhodobé práce.