Sobes.tech
Intern

Mi a különbség a háttérszolgáltatás és a háttérszolgáltatás között az Androidban?

sobes.tech MI

Válasz az MI-től

Az Android 8.0 (API 26) óta megjelent a különbség a normál háttérszolgáltatás és a korlátozott (restricted) háttérszolgáltatás között.

Normál háttérszolgáltatás:

  • Korlátlan ideig működhet a háttérben.
  • A rendszer leállíthatja erőforráshiány esetén, de újraindítható, ha a START_STICKY értéket adja vissza az onStartCommand()-ben.
  • Nem igényel látható értesítéseket a felhasználó számára (bár ez nem a legjobb UX gyakorlat).
  • Jelentős erőforrásokat fogyaszthat az akkumulátor és a CPU tekintetében.

Korlátozott háttérszolgáltatás (alkalmazott korlátozások):

  • Egy láthatatlan vagy nem privilegizált (fehér lista) háttérben indított szolgáltatás erőforrás-korlátozásokkal szembesül.
  • A fő korlátozások a következők:
    • Háttérben való működés korlátozása: A rendszer rövid időn belül (általában néhány perc) leállíthatja a szolgáltatást, miután az alkalmazás háttérbe lépett.
    • Új háttérszolgáltatások indításának tiltása: A háttérben futó alkalmazás nem indíthat új szolgáltatásokat startService()-el. Ehelyett a JobScheduler vagy a WorkManager használata ajánlott.
    • Broadcast üzenetek fogadásának korlátozása: A manifestben implicit broadcast üzenetek figyelmen kívül maradnak. Az alkalmazásnak explicit módon kell regisztrálnia broadcast fogadókat vagy JobScheduler/WorkManager-t kell használnia az események kezelésére.
  • Ezeknek a korlátozásoknak az a célja, hogy javítsák az akkumulátor üzemidejét és a készülék teljesítményét, korlátozva az irracionális erőforrás-használatot a háttéralkalmazások által.

Hogyan válik egy szolgáltatás nem korlátozottá (rendszer szempontjából aktív):

  • Az alkalmazás az első tervben van (a felhasználó aktívan interakcióba lép vele).
  • Az alkalmazás indít egy látható szolgáltatást (foreground service), amely folyamatos értesítést jelenít meg a felhasználónak.
  • Az alkalmazás bizonyos feladatokat végez (pl. broadcast üzenetek feldolgozása, JobScheduler feladatok végrehajtása), amelyek ideiglenesen kivonják a teljes irracionális háttérmunkából.

Fő különbség: Az Android 8.0 és újabb verziókban, egy háttérben futó szolgáltatás, amely nem rendelkezik látható felhasználói aktivitással vagy látható szolgáltatással, a rendszer által erőforrásokhoz való hozzáférés és hosszú távú működés szempontjából korlátozott lesz.