Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android: When is WakeLock needed?

Tags:

android

If I have an IntentService that simply updates the SharedPreference, is a (partial) WakeLock needed?

I understand that a WakeLock keeps the CPU awake, but when is it needed?

like image 274
Code Avatar asked Jul 22 '15 16:07

Code


2 Answers

If you need to keep the CPU running in order to complete some work before the device goes to sleep, you can use a PowerManager system service feature called wake locks. Wake locks allow your application to control the power state of the host device.

Creating and holding wake locks can have a dramatic impact on the host device's battery life. Thus you should use wake locks only when strictly necessary and hold them for as short a time as possible. For example, you should never need to use a wake lock in an activity.

One legitimate case for using a wake lock might be a background service that needs to grab a wake lock to keep the CPU running to do work while the screen is off. Again, though, this practice should be minimized because of its impact on battery life.

Unfortunately, some poorly-coded, malicious, or simply buggy apps might create an abnormal amount of undesirable wakelocks. Other apps require constant Internet access in order to operate in a normal fashion - Facebook and Messenger are probably the most popular representatives. They persistently request information from the web (the so-called "polling" for new events), which is causing subsequent wakelocks.

In other cases, an update to a given app can also cause certain issues, which usually result in partial wakelocks. The latter keep your CPU constantly humming in the background, sometimes without your knowledge, and prevent your device from "going to sleep". That's a pretty substantial prerequisite for anomalous battery drain. Thus, it is advisable to regularly monitor the wakelocks on your device and see which of your apps go harsh on our system's resources.

Read more at:

What-are-wakelocks-how-they-affect-the-battery-life-of-your-Android-device-and-how-to-Greenify

Reference: https://developer.android.com/training/scheduling/wakelock.html

like image 84
My God Avatar answered Sep 17 '22 18:09

My God


It is needed when you don't want CPU to sleep when user locks the screen for example.

If you have an IntentService without acquired WakeLock it will pause after a while if user locks the screen and it will continue its work when user wakes a device. With WakeLock acquired your service will work even if the screen is locked.

As @My God mentioned, it impacts on battery life a lot, so, use it only when you really need to finish some operation and you cannot wait till user wakes a device.

like image 27
Gennadii Saprykin Avatar answered Sep 21 '22 18:09

Gennadii Saprykin