Intern
Kuo skiriasi foninė paslauga nuo foninės paslaugos Android?
sobes.tech AI
Atsakymas iš AI
Skirtumas tarp įprasto foninio serviso ir riboto (restricted) serviso atsirado su Android 8.0 (API 26).
Įprastas foninis servisas:
- Gali veikti neribotą laiką foniniame režime.
- Sistema gali jį nutraukti resursų trūkumo atveju, tačiau jis gali būti paleistas iš naujo, jei
onStartCommand()grąžinaSTART_STICKY. - Nereikalauja naudotojui matomų pranešimų (nors tai nėra geriausia praktika UX požiūriu).
- Gali sunaudoti reikšmingus baterijos ir CPU išteklius.
Ribotas foninis servisas (taikomi apribojimai):
- Servisas, paleistas foniniame režime be matomų aktyvumų ar kitų "baltojo sąrašo" (privilegijuotų sąlygų), susiduria su išteklių naudojimo apribojimais.
- Pagrindiniai apribojimai apima:
- Fono veikimo apribojimas: Servisas gali būti sustabdytas sistema per trumpą laiką (dažniausiai kelias minutes) po to, kai programa pereina į foninį režimą.
- Uždrausta paleisti naujus foninius servise: Fono programa negali paleisti naujų servisų naudojant
startService(). Vietoj to, naudokiteJobSchedulerarbaWorkManager. - Apribojimas gauti platinimo pranešimus: Numatytieji platinimo pranešimai (implicit broadcasts) manifeste bus ignoruojami. Programa turi aiškiai registruoti platinimo imtuvus arba naudoti
JobScheduler/WorkManager.
- Šių apribojimų tikslas – pagerinti baterijos veikimo laiką ir įrenginio našumą, ribojant neefektyvų išteklių naudojimą foninėse programose.
Kaip servisas tampa neribotas (aktyvus sistemos akyse):
- Programa yra priekinėje plane (naudotojas aktyviai su ja sąveikauja).
- Programa paleidžia matomą servisą (foreground service), kuris rodo nuolatinį pranešimą naudotojui.
- Programa atlieka tam tikras užduotis (pvz., platinimo pranešimų apdorojimą,
JobScheduleružduočių vykdymą), kurios laikinai išveda ją iš visiškai neracionalaus foninio darbo būsenos.
Pagrindinis skirtumas: Nuo Android 8.0 ir aukštesnių versijų, veikiantis foninis servisas be matomos naudotojo aktyvumo ar matomo serviso bus ribojamas sistemos atžvilgiu dėl prieigos prie išteklių ir galimybės ilgalaikio darbo. Įprastas "foninis servisas" iki Android 8.0 galėjo veikti be tokių griežtų apribojimų.