Sobes.tech
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() tagastab START_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 kasutada JobScheduler või WorkManager.
    • 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.