Intern
Mis vahe on taustal ja taustal Androidis?
sobes.tech AI
Vastus AI-lt
Erinevus tavalise taustepõhise teenuse ja piiratud (restricted) teenuse vahel avaldas Android 8.0 (API 26).
Tavaline taustateenus:
- Võib töötada piiramatult taustal.
- Süsteem võib selle lõpetada ressursside puudumise tõttu, kuid see võib uuesti käivituda, kui
onStartCommand()tagastabSTART_STICKY. - Ei nõua kasutajale nähtavat teavitust (kuigi see ei ole UX-i seisukohast parim praktika).
- Võib tarbida märkimisväärseid aku ja CPU ressursse.
Piiratud taustateenus (kehtivad piirangud):
- Teenus, mis käivitatakse taustal ilma nähtavate tegevuste või teiste "valge nimekirja" (privileegitud tingimuste) tingimusteta, seisab silmitsi ressursside kasutamise piirangutega.
- Peamised piirangud hõlmavad:
- Taustal töötamise piirang: Teenus võib süsteemi poolt peatada lühikese aja jooksul (tavaliselt mõne minuti jooksul) pärast rakenduse taustale üleminekut.
- Uute taustateenuste käivitamise keeld: Taustarakendus ei saa käivitada uusi teenuseid
startService()abil. Selle asemel tuleks kasutadaJobSchedulervõiWorkManager. - Võimalus saada laiaulatuslikke sõnumeid: Kaudsed laiaulatuslikud sõnumid (implicit broadcasts) manifestis ignoreeritakse. Rakendus peab otseselt registreerima vastuvõtjad või kasutama
JobScheduler/WorkManager.
- Nende piirangute eesmärk on parandada aku kasutusaega ja seadme jõudlust, piirates taustarakenduste ebaefektiivset ressursside kasutamist.
Kuidas teenus muutub piiramatuks (süsteemi silmis):
- Rakendus asub esiplaanil (kasutaja aktiivselt sellega suhtleb).
- Rakendus käivitab nähtava teenuse (foreground service), mis näitab pidevat teavitust kasutajale.
- Rakendus täidab teatud ülesandeid (näiteks laiaulatuslike sõnumite töötlemine,
JobSchedulerülesannete täitmine), mis ajutiselt eemaldavad selle täielikult irratsionaalsest taustatööst.
Peamine erinevus: Android 8.0 ja uuemates versioonides on taustal töötav teenus ilma nähtava kasutajaaktiivsuseta või nähtava teenuseta piiratud süsteemi poolt ressurssidele ja pikaajalisele tööle. Tavaline "taustateenus" kuni Android 8.0 võis töötada ilma selliste ranged piiranguteta.