Intern
Quelle est la différence entre un service en arrière-plan et un service en arrière-plan dans Android?
sobes.tech IA
Réponse de l'IA
La différence entre un service en arrière-plan normal et un service en arrière-plan limité (restricted) est apparue avec Android 8.0 (API 26).
Service en arrière-plan normal :
- Peut fonctionner indéfiniment en arrière-plan.
- Le système peut le terminer en cas de manque de ressources, mais il peut être relancé si
START_STICKYest renvoyé dansonStartCommand(). - Ne nécessite pas de notifications visibles pour l'utilisateur (bien que ce ne soit pas la meilleure pratique du point de vue UX).
- Peut consommer des ressources importantes en batterie et CPU.
Service en arrière-plan limité (restrictions appliquées) :
- Un service lancé en arrière-plan sans activités visibles ou autres "listes blanches" (conditions privilégiées) fait face à des restrictions sur l'utilisation des ressources.
- Les principales restrictions incluent :
- Restriction sur l'exécution en arrière-plan : Le système peut arrêter le service en peu de temps (généralement quelques minutes) après que l'application passe en arrière-plan.
- Interdiction de lancer de nouveaux services en arrière-plan : L'application en arrière-plan ne peut pas lancer de nouveaux services en arrière-plan avec
startService(). À la place, il faut utiliserJobSchedulerouWorkManager. - Restriction sur la réception de messages broadcast : Les messages broadcast implicites dans le manifeste seront ignorés. L'application doit enregistrer explicitement des récepteurs broadcast ou utiliser
JobScheduler/WorkManagerpour gérer les événements.
- L'objectif de ces restrictions est d'améliorer la durée de vie de la batterie et la performance de l'appareil, en limitant l'utilisation irrationnelle des ressources par les applications en arrière-plan.
Comment un service devient non limité (actif aux yeux du système) :
- L'application est au premier plan (l'utilisateur interagit activement avec elle).
- L'application démarre un service visible (foreground service), qui affiche une notification constante à l'utilisateur.
- L'application effectue des tâches spécifiques (par exemple, traitement de messages broadcast, exécution de tâches
JobScheduler) qui la sortent temporairement de l'état de travail en arrière-plan irrationnel complet.
Différence principale : Avec Android 8.0 et versions supérieures, un service fonctionnant en arrière-plan sans activité visible de l'utilisateur ou service visible sera limité par le système en termes d'accès aux ressources et de capacité à fonctionner longtemps. Le "service en arrière-plan" normal avant Android 8.0 pouvait fonctionner sans ces restrictions strictes.