Wake locks parciais travados
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Wake locks parciais são um mecanismo da API PowerManager
que possibilita que os desenvolvedores mantenham a CPU em funcionamento após a tela de um dispositivo ser desativada,
seja devido ao tempo limite do sistema ou porque o usuário pressionou o botão liga/desliga. Seu
app recebe um wake lock parcial ao chamar
acquire()
com a
flag
PARTIAL_WAKE_LOCK
ou usando outras APIs que recebem wake locks.
Um wake lock parcial fica travado se for retido por muito tempo enquanto
o app está sendo executado em
segundo plano. Ou seja, quando nenhuma parte do app está visível para o usuário. Essa condição consome
a bateria do dispositivo porque impede que ele entre em estados de baixo consumo
de energia. Os wake locks parciais só devem ser usados quando for preciso e liberados assim
que não forem mais necessários.
Caso seu app tenha um wake lock parcial travado, você pode usar as orientações nesta página
para diagnosticar e corrigir o problema.
Detectar o problema
Nem sempre você sabe que os wake locks parciais do seu app estão travados.
Se você já publicou o app,
o recurso Android vitals pode ajudar a identificar o problema.
Android vitals
O recurso Android vitals pode ajudar a melhorar a performance do app alertando você, pelo
Play Console, quando o app
apresentar wake locks parciais travados. O Android vitals informa que há wake locks parciais
travados quando pelo menos um wake lock parcial de uma hora ocorre em segundo plano em um período de 24 horas.
A duração da bateria mostrada é uma estimativa com base em informações de todos os usuários medidos
do app. Parar informações sobre como o Google Play coleta dados do Android vitals, consulte
a
documentação do
Play Console.
Depois de identificar que o app tem wake locks parciais travados,
a próxima etapa é resolver o problema.
Corrigir falha
Como os wake locks podem descarregar a bateria do dispositivo, não use wake
locks se houver uma alternativa. A documentação
Escolher a API certa para manter o dispositivo ativo
pode ajudar você a encontrar a melhor solução para seu app.
Se você precisar usar um wake lock, siga as práticas recomendadas
para garantir que ele não prejudique a eficiência do dispositivo. Em particular,
verifique se todos os dispositivos que você adquiriu foram liberados e libere a trava o mais rápido
possível.
Depois de corrigir o problema no código, você pode verificar as correções usando as ferramentas
de depuração de wake lock locais.
Veja também
Recomendados para você
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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)"]]