Sobes.tech
Intern

Wat is het verschil tussen een achtergrondservice en een achtergrondservice in Android?

sobes.tech AI

Antwoord van AI

Het verschil tussen een normale achtergrondservice en een beperkte (restricted) achtergrondservice verscheen met Android 8.0 (API 26).

Normale achtergrondservice:

  • Kan onbeperkt in de achtergrond werken.
  • Het systeem kan het beëindigen bij gebrek aan bronnen, maar het kan opnieuw worden gestart als START_STICKY wordt geretourneerd in onStartCommand().
  • Vereist geen zichtbare meldingen voor de gebruiker (hoewel dit niet de beste praktijk is vanuit UX-oogpunt).
  • Kan aanzienlijke bronnen van batterij en CPU verbruiken.

Beperkte achtergrondservice (toepasselijke beperkingen):

  • Een service gestart in de achtergrond zonder zichtbare activiteiten of andere "witte lijsten" (geprivilegieerde voorwaarden) ondervindt beperkingen in resourcegebruik.
  • De belangrijkste beperkingen omvatten:
    • Beperking op werking in de achtergrond: Het systeem kan de service na korte tijd (meestal enkele minuten) stoppen nadat de app naar de achtergrond is gegaan.
    • Verbod op het starten van nieuwe achtergrondservices: Een app in de achtergrond kan geen nieuwe achtergrondservices starten met startService(). In plaats daarvan moeten JobScheduler of WorkManager worden gebruikt.
    • Beperking op het ontvangen van broadcast-berichten: Impliciete broadcasts in de manifest worden genegeerd. De app moet expliciet broadcast-ontvangers registreren of JobScheduler/WorkManager gebruiken om gebeurtenissen te verwerken.
  • Het doel van deze beperkingen is om de batterijduur en de prestaties van het apparaat te verbeteren door irrationeel gebruik van bronnen door achtergrondapplicaties te beperken.

Hoe een service niet beperkt wordt (actief volgens het systeem):

  • De app bevindt zich op de voorgrond (de gebruiker interacteert actief met de app).
  • De app start een zichtbare service (foreground service), die een constante melding aan de gebruiker toont.
  • De app voert specifieke taken uit (bijvoorbeeld het verwerken van broadcast-berichten, uitvoeren van JobScheduler-taken), die haar tijdelijk uit de volledige irrationele achtergrondstatus halen.

Belangrijkste verschil: Met Android 8.0 en hoger wordt een service die in de achtergrond draait zonder zichtbare activiteit van de gebruiker of zichtbare service, door het systeem beperkt in termen van toegang tot bronnen en de mogelijkheid om langdurig te werken.