Les wakelocks partiels sont un mécanisme de l'API PowerManager
qui permet aux développeurs de maintenir le processeur en fonctionnement après l'arrêt de l'écran d'un appareil (en raison d'un dépassement de délai système ou lorsque l'utilisateur appuie sur le bouton Marche/Arrêt). Votre application acquiert un wakelock partiel en appelant acquire()
avec l'indicateur PARTIAL_WAKE_LOCK
. Un wakelock partiel devient figé s'il est maintenu pendant une longue période alors que votre application s'exécute en arrière-plan (l'utilisateur ne peut voir aucune partie de votre application). Cette condition décharge la batterie de l'appareil, car cela l'empêche de passer à un état de puissance plus faible. Les wakelocks partiels ne doivent être utilisés que lorsqu'ils sont nécessaires et libérés dès qu'ils ne le sont plus.
Si votre application présente un wakelock partiel figé, vous pouvez suivre les instructions de cette page pour diagnostiquer et résoudre le problème.
Détecter le problème
Les wakelocks partiels figés de votre application ne sont pas toujours portés à votre connaissance. Si vous avez déjà publié votre application, Android Vitals peut vous aider à prendre conscience du problème.
Android Vitals
Android Vitals améliore les performances de votre application en vous alertant via la Play Console lorsque votre application présente des wakelocks partiels figés. Android Vitals signale les wakelocks partiels comme figés lorsqu'au moins un wakelock partiel en arrière-plan, d'une durée d'une heure, intervient dans une session de batterie.
La définition d'une session de batterie dépend de la version de la plate-forme.
- Sous Android 10, ce terme désigne l'agrégation de tous les rapports sur la batterie reçus sur une période de 24 heures. Le rapport sur la batterie fait référence à l'intervalle entre deux charges de la batterie, qui passe de moins de 20 % à plus de 80 %, ou de n'importe quel niveau de charge à 100 %.
- Sous Android 11, une session de batterie correspond à une période fixe de 24 heures.
Le nombre de sessions de batterie affiché est une donnée cumulée pour tous les utilisateurs mesurés de l'application. Pour savoir comment Google Play collecte les données Android Vitals, consultez la documentation de la Play Console.
Une fois que vous savez que votre application présente un nombre excessif de wakelocks partiels figés, vous devez résoudre le problème.
Résoudre le problème
Étant donné que les wakelocks peuvent décharger la batterie de l'appareil, vous ne devez pas les utiliser s'il existe une autre solution. La documentation Choisir la bonne API pour maintenir l'appareil éveillé peut vous aider à trouver la meilleure solution pour votre application.
Si vous devez utiliser un wakelock, suivez les bonnes pratiques concernant les wakelocks pour vous assurer qu'ils n'affectent pas l'efficacité de l'appareil. En particulier, assurez-vous que chaque appareil que vous acquérez est libéré et libérez le verrouillage aussi rapidement que possible.
Après avoir résolu le problème dans le code, vérifiez que votre application lève correctement les wakelocks à l'aide des outils suivants:
dumpsys : outil qui fournit des informations sur l'état des services système d'un appareil. Pour afficher l'état du service d'alimentation, qui comprend une liste de wakelocks, exécutez
adb shell dumpsys power
.Batterie Historian : outil qui analyse la sortie d'un rapport de bug Android dans une représentation visuelle des événements liés à l'alimentation.
Recommandations personnalisées
- Remarque : Le texte du lien s'affiche lorsque JavaScript est désactivé
- Cadres figés
- Exécuter des benchmarks dans l'intégration continue
- Créer et mesurer des profils de référence sans Macbellnchmark