Trop de wakelocks partiels

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 ou en utilisant d'autres API qui acquièrent des wakelocks. L'utilisation excessive de wakelocks partiels décharge la batterie de l'appareil, car elle empêche l'appareil de passer à des états de faible consommation d'énergie. Les wakelocks partiels ne doivent être utilisés que lorsque cela est nécessaire et libérés dès qu'ils ne le sont plus.

Si votre application utilise des wakelocks partiels de manière excessive, vous pouvez suivre les instructions de cette page pour diagnostiquer et résoudre le problème.

Détecter le problème

Android Vitals peut vous aider à déterminer quand l'utilisation de wakelocks partiels par votre application est excessive.

Android Vitals

Android Vitals peut vous aider à améliorer les performances de votre application en vous alertant via la Play Console lorsque votre application utilise un nombre excessif de wakelocks partiels.

Android Vitals signale l'utilisation de wakelocks partiels comme excessive lorsque tous les wakelocks partiels, additionnés, durent deux heures ou plus sur une période de 24 heures. Android Vitals ne suit la durée du wakelock que si le wakelock est maintenu lorsque l'application est en arrière-plan ou exécute un service de premier plan. Actuellement, Android Vitals exempte du calcul des wakelocks les wakelocks créés par les API audio, location et JobScheduler initiées par l'utilisateur.

Le tableau de bord Android Vitals sur les wakelocks partiels excessifs fournit des informations détaillées sur les noms de wakelocks non exemptés associés à votre application, en indiquant les sessions et les durées concernées.

Si des wakelocks partiels excessifs se produisent dans plus de 5% des sessions d'application sur tous les appareils au cours d'une période de 28 jours, cela peut affecter la visibilité de votre application sur Play.

Une fois que vous savez que votre application présente un nombre excessif de wakelocks partiels, 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 alternative. La documentation Choisir la bonne API pour maintenir l'appareil activé 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 que vos wakelocks ne nuisent pas à l'efficacité de l'appareil. En particulier, assurez-vous que chaque appareil que vous acquérez est libéré et libérez le wakelock le plus rapidement possible.

Votre application peut également utiliser des wakelocks même si vous ne les acquérez pas explicitement. Si vous voyez des wakelocks attribués à l'application que vous ne reconnaissez pas, la section Identifier les wakelocks créés par d'autres API peut vous aider à identifier les API qui les ont peut-être créés.

Après avoir résolu le problème dans le code, vous pouvez vérifier vos corrections à l'aide des outils de débogage de wakelocks locaux.

Voir aussi