3

J'ai lu dans the docs que Context.startForegroundService() a une promesse implicite que le service démarré appellera startForeground(). Toutefois, depuis qu'Ondroid O apporte des modifications aux services d'arrière-plan et de premier plan, y a-t-il d'autres améliorations de performances comparées à l'ancienne méthode startService(), ou s'agit-il simplement d'une bonne pratique à suivre?Y a-t-il des avantages à utiliser Context.startForegroundService (Intent) au lieu de Context.startService (Intent) pour les services de premier plan?

Répondre

3

Il ne s'agit ni d'amélioration des performances, ni des avantages, ni des meilleures pratiques.

À partir de l'API 26, le système ne permet tout simplement pas à une application en arrière-plan de créer un service d'arrière-plan.

Donc, si votre application est en arrière-plan (vous êtes invités à faire de même si elle est au premier plan aussi bien), vous devez utiliser Context.startForegroundService(Intent) au lieu de l'ancien startService(Intent). Le service doit alors appeler startForeground(int, Notification) dans les 5 premières secondes après le démarrage, sinon le système arrêtera le service.

Il convient également de mentionner qu'il existe des informations selon lesquelles l'ancien mode de démarrage d'un service avec startService(Intent) à partir d'une application en arrière-plan fonctionne toujours sur la version actuelle d'Android Oreo, mais il sera bientôt corrigé. Par conséquent, à partir de l'API 26, vous souhaitez utiliser la nouvelle méthode Context.startForegroundService(Intent) au lieu de startService(Intent) chaque fois que vous souhaitez démarrer un service de premier plan.

+0

'il y a des informations que l'ancienne façon de démarrer un service avec startService (Intent) à partir d'une application bacjground fonctionne toujours? Y at-il une source? –