Intern
Aký je rozdiel medzi službou na pozadí a službou na pozadí v Android?
sobes.tech AI
Odpoveď od AI
Rozdiel medzi bežným pozadovým servisom a obmedzeným (restricted) servisom sa objavil od Androidu 8.0 (API 26).
Bežný pozdný servis:
- Môže pracovať neobmedzený čas v pozadí.
- Systém ho môže ukončiť pri nedostatku zdrojov, ale môže byť znovu spustený, ak je v
onStartCommand()vrátenéSTART_STICKY. - Nevyžaduje od používateľa viditeľné oznámenie (hoci to nie je najlepšia prax z hľadiska UX).
- Môže spotrebovať značné zdroje batérie a CPU.
Obmedzený pozdný servis (platia obmedzenia):
- Služba spustená v pozadí bez viditeľných aktivít alebo iných "bielych zoznamov" (privilegované podmienky) čelí obmedzeniam na využívanie zdrojov.
- Hlavné obmedzenia zahŕňajú:
- Obmedzenie práce v pozadí: Služba môže byť systémom zastavená po krátkom čase (zvyčajne niekoľko minútach) po prechode aplikácie do pozadia.
- Zákaz spúšťania nových pozadových služieb: Pozadová aplikácia nemôže spúšťať nové pozadové služby pomocou
startService(). Namiesto toho by mala použiťJobScheduleraleboWorkManager. - Obmedzenie prijímania broadcast správ: Nepriame broadcast správy (implicit broadcasts) v manifeste budú ignorované. Aplikácia by mala výslovne registrovať príjemcov broadcast správ alebo použiť
JobScheduler/WorkManagerna spracovanie udalostí.
- Cieľom týchto obmedzení je zlepšiť výdrž batérie a výkon zariadenia, obmedzovaním neracionálneho využívania zdrojov pozadím aplikácií.
Ako sa servis stáva neobmedzeným (aktívnym v očiach systému):
- Aplikácia je na poprednom pláne (používateľ s ňou aktívne interaguje).
- Aplikácia spúšťa viditeľný servis (foreground service), ktorý zobrazuje trvalé oznámenie používateľovi.
- Aplikácia vykonáva určité úlohy (napríklad spracovanie broadcast správ, vykonávanie úloh
JobScheduler), ktoré dočasne vyvedú aplikáciu zo stavu úplnej iracionálnej pozadí práce.
Hlavný rozdiel: Od Androidu 8.0 a vyšších verzií bude obmedzený systémom servis pracujúci v pozadí bez viditeľnej aktivity používateľa alebo viditeľného servisu. Bežný "pozadový servis" pred Androidom 8.0 mohol pracovať bez takýchto prísnych obmedzení.