Partial wake locks are a mechanism in the
PowerManager API
that lets developers keep the CPU running after a device's display turns off
(whether due to system timeout or the user pressing the power button). Your
app acquires a partial wake lock by calling
acquire()
with the
PARTIAL_WAKE_LOCK
flag, or by using other APIs that acquire wake locks.
A partial wake lock becomes stuck if it is held for a long time while
your app is running in the
background (no part of your app is visible to the user). This condition drains
the device's battery because it prevents the device from entering lower power
states. Partial wake locks should be used only when necessary and released as
soon as no longer needed.
If your app has a stuck partial wake lock, you can use the guidance in this page to diagnose and fix the problem.
Fix the problem
Because wake locks can drain the device battery, you shouldn't use wake locks if there's an alternative. The Choose the right API to keep the device awake documentation can help you find the best solution for your app.
If you do need to use a wake lock, follow wake lock best practices to make sure your wake locks don't hurt device efficiency. In particular, make sure every device you acquire is released, and release the lock as quickly as possible.
After fixing the problem in code, you can verify your fixes by using local wake lock debugging tools.
See also
Recommended for you
- Note: link text is displayed when JavaScript is off
- Frozen frames
- Run benchmarks in Continuous Integration
- Create and measure Baseline Profiles without Macrobenchmark