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ácenoSTART_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žívatJobSchedulerneboWorkManager. - 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/WorkManagerpro 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.