Wakelocks partiels figés
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
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.
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 période 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 des wakelocks partiels figés, vous devez résoudre le problème.
Résoudre le problème
Étant donné que les wakelocks peuvent vider 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, vous pouvez vérifier vos corrections à l'aide d'outils de débogage de wakelock locaux.
Voir aussi
Recommandations personnalisées
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/07/27 (UTC)."],[],[],null,["# Stuck partial wake locks\n\nPartial wake locks are a mechanism in the\n[`PowerManager`](/reference/android/os/PowerManager) API\nthat lets developers keep the CPU running after a device's display turns off\n(whether due to system timeout or the user pressing the power button). Your\napp acquires a partial wake lock by calling\n[`acquire()`](/reference/android/os/PowerManager.WakeLock#acquire())\nwith the\n[`PARTIAL_WAKE_LOCK`](/reference/android/os/PowerManager#PARTIAL_WAKE_LOCK)\nflag, or by using [other APIs that acquire wake locks](/develop/background-work/background-tasks/awake/wakelock/identify-wls).\nA partial wake lock becomes *stuck* if it is held for a long time while\nyour app is running in the\nbackground (no part of your app is visible to the user). This condition drains\nthe device's battery because it prevents the device from entering lower power\nstates. Partial wake locks should be used only when necessary and released as\nsoon as no longer needed.\n\nIf your app has a stuck partial wake lock, you can use the guidance in this page\nto diagnose and fix the problem.\n\nDetect the problem\n------------------\n\nYou may not always know that your app's partial wake locks are stuck.\nIf you have already published your app,\nAndroid vitals can help make you aware of the problem.\n\n### Android vitals\n\nAndroid vitals can help improve your app's performance by alerting you via the\n[Play Console](https://play.google.com/console/) when your app is\nexhibiting stuck partial wake locks. Android vitals reports partial wake locks\nas stuck when at least one, hour-long, while in the background, partial wake\nlock occurs in a 24-hour period.\n\nThe number of battery sessions displayed is an aggregate for all measured users\nof the app. For information on how Google Play collects Android vitals data, see\nthe\n[Play Console](https://support.google.com/googleplay/android-developer/answer/7385505)\ndocumentation.\n\nOnce you're aware that your app has stuck partial wake locks,\nyour next step is to address the issue.\n\nFix the problem\n---------------\n\nBecause wake locks can drain the device battery, you shouldn't use wake\nlocks if there's an alternative. The\n[Choose the right API to keep the device awake](/develop/background-work/background-tasks/awake)\ndocumentation can help you find the best solution for your app.\n\nIf you do need to use a wake lock, [follow wake lock best practices](/develop/background-work/background-tasks/awake/wakelock/best-practices)\nto make sure your wake locks don't hurt device efficiency. In particular,\nmake sure every device you acquire is released, and release the lock as quickly\nas possible.\n\nAfter fixing the problem in code, you can verify your fixes by using [local\nwake lock debugging tools](/develop/background-work/background-tasks/awake/wakelock/debug-locally).\n\nSee also\n--------\n\n- [Excessive partial wake locks (beta)](/topic/performance/vitals/excessive-wakelock)\n- [Wake lock documentation](/develop/background-work/background-tasks/awake/wakelock)\n\nRecommended for you\n-------------------\n\n- Note: link text is displayed when JavaScript is off\n- [Frozen frames](/topic/performance/vitals/render#frozen-frames)\n- [Run benchmarks in Continuous Integration](/topic/performance/benchmarking/benchmarking-in-ci)\n- [Create and measure Baseline Profiles without Macrobenchmark](/topic/performance/baselineprofiles/manually-create-measure)"]]