Sobes.tech
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ćena START_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 koristiti JobScheduler ili WorkManager.
    • 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.