Intern
Koja je razlika između usluge u pozadini i usluge u pozadini u Androidu?
sobes.tech АИ
Одговор од АИ
Razlika između običnog pozadinskog servisa i ograničenog (restricted) servisa pojavila se sa Android 8.0 (API 26).
Obični pozadinski servis:
- Može raditi neograničeno vreme u pozadinskom režimu.
- Sistem ga može prekinuti pri nedostatku resursa, ali može biti ponovo pokrenut ako je u
onStartCommand()vraćenaSTART_STICKY. - Ne zahteva od korisnika vidljive obaveštenje (iako to nije najbolja praksa sa UX stanovišta).
- Može trošiti značajne resurse baterije i CPU.
Ograničeni pozadinski servis (primaju se ograničenja):
- Servis koji se pokreće u pozadinskom režimu bez vidljivih aktivnosti ili drugih "belih lista" (privilegovanih uslova), suočava se sa ograničenjima na korišćenje resursa.
- Glavna ograničenja uključuju:
- Ograničenje rada u pozadinskom režimu: Servis može biti zaustavljen od strane sistema nakon kratkog vremena (obično nekoliko minuta) nakon prelaska aplikacije u pozadinski režim.
- Zabrana pokretanja novih pozadinskih servisa: Pozadinska aplikacija ne može pokretati nove pozadinske servise pomoću
startService(). Umesto toga, treba koristitiJobScheduleriliWorkManager. - Ograničenje primanja širokovalnih poruka: Nejasne širokovalne poruke (implicit broadcasts) u manifestu će biti ignorisane. Aplikacija mora eksplicitno registrovati primatelje širokovalnih poruka ili koristiti JobScheduler/WorkManager za obradu događaja.
- Cilj ovih ograničenja je poboljšanje trajanja baterije i performansi uređaja, ograničavajući neracionalno korišćenje resursa od strane pozadinskih aplikacija.
Kako servis postaje neograničen (aktivni u očima sistema):
- Aplikacija je na prednjem planu (korisnik aktivno sa njom interaguje).
- Aplikacija pokreće vidljiv servis (foreground service), koji prikazuje stalno obaveštenje korisniku.
- Aplikacija obavlja određene zadatke (npr. obrada širokovalnih poruka, izvršavanje JobScheduler zadataka), koji privremeno izbacuju aplikaciju iz stanja potpune iracionalne pozadinske aktivnosti.
Glavna razlika: Sa Android 8.0 i novijim verzijama, servis koji radi u pozadinskom režimu bez vidljive aktivnosti korisnika ili vidljivog servisa biće ograničen od strane sistema u pogledu pristupa resursima i mogućnosti dugotrajnog rada. Obični "pozadinski servis" pre Android 8.0 mogao je raditi bez takvih strogih ograničenja.