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 azonStartCommand()-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 aJobSchedulervagy aWorkManagerhaszná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,
JobSchedulerfeladatok 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.