Several Methods of Power Optimization in Android* Devices

By Denis Smirnov, Published: 08/04/2014, Last Updated: 08/04/2014


Development of today’s Android* devices and the applications for those devices includes focusing on continuous improvement on power optimization to reduce power consumption and prolong battery life for the mobile device.

Generally, expectations of most users today are that an Android mobile device’s battery charge will last at least one 24-hour period. Such user expectations may be unrealistic if the user doesn’t realize that one of the reasons for the rapid power discharge is due to the use of applications that are not optimized to save electricity. Part of the problem can be solved by the improvements to an application so they consume less electricity. This article focuses on ways to optimize application power consumption so that applications and the Android device meet user expectations and thus improve the user experience with the device.

Parallelism and Multithreading

Today, Android devices use multi-core processors. Using all available cores not only improves performance for the device but also saves energy. When you make use of the largest number of simultaneous threads or cores, the program will run faster, while consuming less electricity.

One of the main reasons for the high power consumption in the active state of the application is the high frequency of system calls. Common sources of synchronization calls at the core level are transitions between an active state and an idle state. If you combine periodic actions and avoid unnecessary transitions between an active state and an idle state, it will be possible to increase the parallelism of the streams. These changes along with implementing multithreading will reduce power discharge for your app.

Optimization of Often Used Code

This is one of the basic principles. Optimization of the most frequently used code achieves the highest win, so you should start with this. One way to improve this code is by using the most current vector instructions, such as SSE, AVX, etc. These instructions help you perform common actions quickly while requiring less power.

Reducing Memory Usage

Optimizing memory usage also helps reduce power consumption in active applications. To reduce memory usage you need to:

  • Avoid unnecessary graphics format conversions (e.g. conversion from YUV to RGB and back) to access the GPU and CPU
  • Cache frequently-used data structures
  • Limit the amount of movement of data between kernel space and user space


As the development and production of Android devices accelerate, developers will continue to play a major role in creating more efficient versions—requiring lower power consumption—for applications and to continually address power optimization issues.

About The Author

Denis Smirnov ( is a Software Intern and has worked at Intel as a Technical Intern for nine months. Denis is getting his master’s degree in Computer Science in the Nizhny Novgorod State Technical University, specializing in Applied Mathematics.

Related Articles and Resources

Product and Performance Information


Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804