SlideShare une entreprise Scribd logo
1  sur  46
Télécharger pour lire hors ligne
android battery
 consumption
the what & how
   kumar rangarajan
introducing
   littleEye appInsight




CT scanner for your Android App
why should you care about battery
         consumption?
• #1 pain point of smart phones users.
• more visible on Android than in iOS
• unlike memory, you can never reclaim excess usage!
• no moore’s law for battery capacity
• improving battery capacity is an ongoing research
  activity, but no current solution
• even then keeping up with consumption would be
  difficult as apps get more powerful and resource
  hungry
we code... consumers suffer



             Bad battery life is a big
             problem for
              ‣ Users
              ‣ Developers
              ‣ Ad networks
              ‣ Smartphone manufacturers
why should you care about battery
         consumption?
• #1 pain point of smart phones users.
• more visible on Android world than in iOS
• unlike memory, you can never reclaim excess usage!
• no moore’s law for battery capacity
• improving battery capacity is an ongoing research
  activity, but no current solution
• even then keeping up with consumption would be
  difficult as apps get more powerful and resource
  hungry
why should you care about battery
         consumption?
• #1 pain point of smart phones users.
• more visible on Android world than in iOS
• unlike memory, you can never reclaim excess
  usage!
• no moore’s law for battery capacity
• improving battery capacity is an ongoing research activity,
  but no current solution
• even then keeping up with consumption would be
why should you care about battery
         consumption?
• #1 pain point of smart phones users.
• more visible on Android world than in iOS
• unlike memory, you can never reclaim excess usage!
• no moore’s law for battery capacity
• improving battery capacity is an ongoing research activity,
  but no current solution
• even then keeping up with consumption would be
  difficult as apps get more powerful and resource hungry
why should you care about battery
         consumption?
• #1 pain point of smart phones users.
• more visible on Android world than in iOS
• unlike memory, you can never reclaim excess usage!
• no moore’s law for battery capacity
• improving battery capacity is an ongoing
  research activity, but no current solution
• even then keeping up with consumption would be
  difficult as apps get more powerful and resource hungry
why should you care about battery
         consumption?
• #1 pain point of smart phones users.
• more visible on Android world than in iOS
• unlike memory, you can never reclaim excess usage!
• no moore’s law for battery capacity
• improving battery capacity is an ongoing research activity,
  but no current solution

• even then keeping up with consumption
  would be difficult as apps will get more
  powerful and resource hungry
what consumes power?




   originally published in Google IO by Jeff Sharkey
network activity
• EDGE consumes less power for a byte of data transfer,
  but is slow
• Wifi consumes more power on average, but can do
  job faster
• 3G consumes more power than Wifi, and typically
  slower than Wifi.
• 4G consumes more power than 3G, and depending on
  availability, faster than Wifi
                    4G > 3G > Wifi > 2G
what causes power consumption?
• four primary states -
    ‣ establishing connection or association
    ‣ maintaining association (idle)
    ‣ transmission (two or more sub states)
    ‣ tail state (pseudo state)

               Establish         Maintain          Transmit                 Tail
 Wifi              High              Low               Low               Low

  2G              Low               Low               Low               Low

  3G              Low               Low               High              High
       derived from http://people.cs.umass.edu/~arun/papers/TailEnder.pdf
more about states




time between state reduction = tail state
how apps can impact state

       number of duration
                             size of each time in high/
          data     between
                              operation     low state
       operations operations

                                             18 + 42
app1       3          18         1 mb/s
                                             seconds


                                              8 + 12
app2       3      0 (bundled)    1 mb/s
                                             seconds
relative power consumption




  Total Current Consumed for 1 minute

 app1     78mA
                    app1 consumes 3x app2
 app2     28mA
best practices for network
• prefetch data
  ‣ to avoid switching states frequently, try and read as much data as
    possible
  ‣ trade-off between too much pre-fetch and battery drain
  ‣ google recommends prefetching data that you will initiate in the
    next 2 to 5 minutes, and in the order of 1-5 MB size

• batch data
  ‣ do data send/receive in batches rather than on-demand
  ‣ eg: batch analytics information, rather than sending them as they
    are collected
best practices for network
• prefetch data
  ‣ to avoid switching states frequently, try and read as much data as
    possible
  ‣ trade-off between too much pre-fetch and battery drain
  ‣ google recommends prefetching data that you will initiate in the
    next 2 to 5 minutes, and in the order of 1-5 MB size

• batch data
  ‣ do data send/receive in batches rather than on-demand
  ‣ eg: batch analytics information, rather than sending them as they
    are collected
best practices for network
• detect network connection
  ‣ avoid connection attempts if no network is active

• avoid polling and use GCM when possible
  ‣ avoids multiple connections
  ‣ reduces the number of device state changes

• using inexact timers
  ‣ AlarmManager.setInexactRepeating()
  ‣ use ELAPSED_REALTIME instead of ELAPED_REALTIME_WAKEUP
best practices for network
• detect network connection
  ‣ avoid connection attempts if no network is active

• avoid polling and use GCM when possible
  ‣ avoids multiple connections
  ‣ reduces the number of device state changes

• using inexact timers
  ‣ AlarmManager.setInexactRepeating()
  ‣ use ELAPSED_REALTIME instead of ELAPED_REALTIME_WAKEUP
best practices for network
• detect network connection
  ‣ avoid connection attempts if no network is active

• avoid polling and use GCM when possible
  ‣ avoids multiple connections
  ‣ reduces the number of device state changes

• using inexact timers
  ‣ AlarmManager.setInexactRepeating()
  ‣ use ELAPSED_REALTIME instead of ELAPED_REALTIME_WAKEUP
best practices for network

• use caching
 ‣ avoid redundant downloads

• varying download pattern
 ‣ modify pattern based on connection type
 ‣ download more data per session on faster
   networks
   ❖   change the aggression of pre-fetch
best practices for network

• use caching
 ‣ avoid redundant downloads

• varying download pattern
 ‣ modify pattern based on connection type
 ‣ download more data per session on faster
   networks
   ❖   change the aggression of pre-fetch
other tips (from google)

• monitor charge level and state
• monitor and determine the docking state
 and type
• monitor the connectivity state
• manipulate broadcast receivers on-demand
other tips (from google)

• monitor charge level and state
• monitor and determine the docking state
 and type
• monitor the connectivity state
• manipulate broadcast receivers on-demand
other tips (from google)

• monitor charge level and state
• monitor and determine the docking state
 and type
• monitor the connectivity state
• manipulate broadcast receivers on-demand
other tips (from google)

• monitor charge level and state
• monitor and determine the docking state
 and type
• monitor the connectivity state
• manipulate broadcast receivers on-demand
if your audience has not gone
          to sleep yet
                &
       organizers have...
screen
• color matters!
  ‣ esp on OLED screens

• darker the color, lesser the
  consumption
• brightness levels have more
  impact
  ‣ refer to - http://stackoverflow.com/
                                             Chameleon: Color Transformation on OLED Displays
    questions/5032588/cant-apply-system-
    screen-brightness-programmatically-in-
    android
  ‣ programmatically reduce brightness if
    its suits your app/activity
screen
• color matters!
  ‣ esp on OLED screens

• darker the color, lesser the
  consumption
• brightness levels have more
  impact
  ‣ refer to - http://stackoverflow.com/
                                             Chameleon: Color Transformation on OLED Displays
    questions/5032588/cant-apply-system-
    screen-brightness-programmatically-in-
    android
  ‣ programmatically reduce brightness if
    its suits your app/activity
screen
• color matters!
  ‣ esp on OLED screens

• darker the color, lesser the
  consumption
• brightness levels have more
  impact
  ‣ refer to - http://stackoverflow.com/
                                             Chameleon: Color Transformation on OLED Displays
    questions/5032588/cant-apply-system-
    screen-brightness-programmatically-in-
    android
  ‣ programmatically reduce brightness if
    its suits your app/activity
cpu
• typically runs on various
  frequencies
• frequency transition controlled
  by governor policy installed
• same concept as on linux based
  PCs, but typically more
  aggressive
• system drops down to ‘deep
  sleep’ as much as it can
• frequencies are scaled based of
  usage                             (C) CPUspy
cpu
• typically runs on various
  frequencies
• frequency transition controlled
  by governor policy installed
• same concept as on linux based
  PCs, but typically more
  aggressive
• system drops down to ‘deep
  sleep’ as much as it can
• frequencies are scaled based of
  usage                             (C) CPUspy
cpu
• typically runs on various
  frequencies
• frequency transition controlled
  by governor policy installed
• same concept as on linux based
  PCs, but typically more
  aggressive
• system drops down to ‘deep
  sleep’ as much as it can
• frequencies are scaled based of
  usage                             (C) CPUspy
cpu
• typically runs on various
  frequencies
• frequency transition controlled
  by governor policy installed
• same concept as on linux based
  PCs, but typically more
  aggressive
• system drops down to ‘deep
  sleep’ as much as it can
• frequencies are scaled based of
  usage                             (C) CPUspy
cpu
• typically runs on various
  frequencies
• frequency transition controlled
  by governor policy installed
• same concept as on linux based
  PCs, but typically more
  aggressive
• system drops down to ‘deep
  sleep’ as much as it can
• frequencies are scaled based of
  usage                             (C) CPUspy
best practices for cpu
• wakelocks are your friend, but your users
  worst nightmare!
• use them only if really needed and ensure
  they are removed as soon as possible
• use ‘android:keepScreenOn’ property in your
  manifest instead of doing it programmatically
• if possible, spread out your computationally
  intensive job
best practices for cpu
• wakelocks are your friend, but your users
  worst nightmare!
• use them only if really needed and ensure
  they are removed as soon as possible
• use ‘android:keepScreenOn’ property in your
  manifest instead of doing it programmatically
• if possible, spread out your computationally
  intensive job
best practices for cpu
• wakelocks are your friend, but your users
  worst nightmare!
• use them only if really needed and ensure
  they are removed as soon as possible
• use ‘android:keepScreenOn’ property in your
  manifest instead of doing it programmatically
• if possible, spread out your computationally
  intensive job
best practices for cpu
• wakelocks are your friend, but your users
  worst nightmare!
• use them only if really needed and ensure
  they are removed as soon as possible
• use ‘android:keepScreenOn’ property in your
  manifest instead of doing it programmatically
• if possible, spread out your computationally
  intensive job
best practices for cpu
• gpu typically consumes more power than cpu
   ‣ avoid floating point math where possible

• use gpu for data-parallel tasks like video/image
  processing
• use algorithms that consume less CPU cycle
   ‣ O(n log n) vs O(n 2) algorithms

  goal - keep the freq to the lowest
  level or reduce the number of cycles
best practices for cpu
• gpu typically consumes more power than cpu
   ‣ avoid floating point math where possible

• use gpu for data-parallel tasks like video/image
  processing
• use algorithms that consume less CPU cycle
   ‣ O(n log n) vs O(n 2) algorithms

  goal - keep the freq to the lowest
  level or reduce the number of cycles
best practices for cpu
• gpu typically consumes more power than cpu
   ‣ avoid floating point math where possible

• use gpu for data-parallel tasks like video/image
  processing
• use algorithms that consume less CPU cycle
   ‣ O(n log n) vs O(n 2) algorithms

  goal - keep the freq to the lowest
  level or reduce the number of cycles
best practices (others)

• gps is another very expensive component
   ‣ avoid fine grained locations if possible
• use power efficient SDKs
   ‣ eg: Location SDK from SkyhookWireless
best practices (others)

• gps is another very expensive component
   ‣ avoid fine grained locations if possible
• use power efficient SDKs
   ‣ eg: Location SDK from SkyhookWireless
references
1. http://developer.android.com/training/efficient-downloads/index.html
2. http://developer.android.com/training/monitoring-device-state/
   index.html
3. http://dl.google.com/io/2009/pres/W_0300_CodingforLife-
   BatteryLifeThatIs.pdf
4. http://people.cs.umass.edu/~arun/papers/TailEnder.pdf
5. http://chipdesignmag.com/lpd/absolute-power/2012/05/10/4g-lte-vs-3g/
6. http://thisweekinbatteries.blogspot.in/
7. http://www.ruf.rice.edu/~mobile/publications/dong10chameleon-
   demo.pdf
thank you

                 this presentation has been shared @
http://www.slideshare.net/littleeye/power-optimization-for-android-developers

                      http://www.littleeye.co/blog


                          kumar@littleeye.co

Contenu connexe

En vedette

Energy consumption in smart phones huda
Energy consumption in smart phones hudaEnergy consumption in smart phones huda
Energy consumption in smart phones huda
Noor Huda
 
Android Performance Best Practices
Android Performance Best Practices Android Performance Best Practices
Android Performance Best Practices
Amgad Muhammad
 
Greenhouse Effect Power Point
Greenhouse Effect Power PointGreenhouse Effect Power Point
Greenhouse Effect Power Point
hilli1sm
 

En vedette (12)

Energy consumption in smart phones huda
Energy consumption in smart phones hudaEnergy consumption in smart phones huda
Energy consumption in smart phones huda
 
Energy efficiency of android
Energy efficiency of androidEnergy efficiency of android
Energy efficiency of android
 
LCA13: Memory Hotplug on Android
LCA13: Memory Hotplug on AndroidLCA13: Memory Hotplug on Android
LCA13: Memory Hotplug on Android
 
10 ways to improve your Android app performance
10 ways to improve your Android app performance10 ways to improve your Android app performance
10 ways to improve your Android app performance
 
Learn about energy consumption and battery life on Android devices
Learn about energy consumption and battery life on Android devicesLearn about energy consumption and battery life on Android devices
Learn about energy consumption and battery life on Android devices
 
State of Mobile Commerce 2014 (Sucharita Mulpuru)
State of Mobile Commerce 2014 (Sucharita Mulpuru)State of Mobile Commerce 2014 (Sucharita Mulpuru)
State of Mobile Commerce 2014 (Sucharita Mulpuru)
 
Android Performance Best Practices
Android Performance Best Practices Android Performance Best Practices
Android Performance Best Practices
 
The Greenhouse Effect
The Greenhouse EffectThe Greenhouse Effect
The Greenhouse Effect
 
Ppt on World Of Smartphones
Ppt on World Of SmartphonesPpt on World Of Smartphones
Ppt on World Of Smartphones
 
greenhouse effect
 greenhouse effect greenhouse effect
greenhouse effect
 
50 Stunning Mobile Statistics
50 Stunning Mobile Statistics50 Stunning Mobile Statistics
50 Stunning Mobile Statistics
 
Greenhouse Effect Power Point
Greenhouse Effect Power PointGreenhouse Effect Power Point
Greenhouse Effect Power Point
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 

Power Optimization for Android developers

  • 1. android battery consumption the what & how kumar rangarajan
  • 2. introducing littleEye appInsight CT scanner for your Android App
  • 3. why should you care about battery consumption? • #1 pain point of smart phones users. • more visible on Android than in iOS • unlike memory, you can never reclaim excess usage! • no moore’s law for battery capacity • improving battery capacity is an ongoing research activity, but no current solution • even then keeping up with consumption would be difficult as apps get more powerful and resource hungry
  • 4. we code... consumers suffer Bad battery life is a big problem for ‣ Users ‣ Developers ‣ Ad networks ‣ Smartphone manufacturers
  • 5. why should you care about battery consumption? • #1 pain point of smart phones users. • more visible on Android world than in iOS • unlike memory, you can never reclaim excess usage! • no moore’s law for battery capacity • improving battery capacity is an ongoing research activity, but no current solution • even then keeping up with consumption would be difficult as apps get more powerful and resource hungry
  • 6. why should you care about battery consumption? • #1 pain point of smart phones users. • more visible on Android world than in iOS • unlike memory, you can never reclaim excess usage! • no moore’s law for battery capacity • improving battery capacity is an ongoing research activity, but no current solution • even then keeping up with consumption would be
  • 7. why should you care about battery consumption? • #1 pain point of smart phones users. • more visible on Android world than in iOS • unlike memory, you can never reclaim excess usage! • no moore’s law for battery capacity • improving battery capacity is an ongoing research activity, but no current solution • even then keeping up with consumption would be difficult as apps get more powerful and resource hungry
  • 8. why should you care about battery consumption? • #1 pain point of smart phones users. • more visible on Android world than in iOS • unlike memory, you can never reclaim excess usage! • no moore’s law for battery capacity • improving battery capacity is an ongoing research activity, but no current solution • even then keeping up with consumption would be difficult as apps get more powerful and resource hungry
  • 9. why should you care about battery consumption? • #1 pain point of smart phones users. • more visible on Android world than in iOS • unlike memory, you can never reclaim excess usage! • no moore’s law for battery capacity • improving battery capacity is an ongoing research activity, but no current solution • even then keeping up with consumption would be difficult as apps will get more powerful and resource hungry
  • 10. what consumes power? originally published in Google IO by Jeff Sharkey
  • 11. network activity • EDGE consumes less power for a byte of data transfer, but is slow • Wifi consumes more power on average, but can do job faster • 3G consumes more power than Wifi, and typically slower than Wifi. • 4G consumes more power than 3G, and depending on availability, faster than Wifi 4G > 3G > Wifi > 2G
  • 12. what causes power consumption? • four primary states - ‣ establishing connection or association ‣ maintaining association (idle) ‣ transmission (two or more sub states) ‣ tail state (pseudo state) Establish Maintain Transmit Tail Wifi High Low Low Low 2G Low Low Low Low 3G Low Low High High derived from http://people.cs.umass.edu/~arun/papers/TailEnder.pdf
  • 13. more about states time between state reduction = tail state
  • 14. how apps can impact state number of duration size of each time in high/ data between operation low state operations operations 18 + 42 app1 3 18 1 mb/s seconds 8 + 12 app2 3 0 (bundled) 1 mb/s seconds
  • 15. relative power consumption Total Current Consumed for 1 minute app1 78mA app1 consumes 3x app2 app2 28mA
  • 16. best practices for network • prefetch data ‣ to avoid switching states frequently, try and read as much data as possible ‣ trade-off between too much pre-fetch and battery drain ‣ google recommends prefetching data that you will initiate in the next 2 to 5 minutes, and in the order of 1-5 MB size • batch data ‣ do data send/receive in batches rather than on-demand ‣ eg: batch analytics information, rather than sending them as they are collected
  • 17. best practices for network • prefetch data ‣ to avoid switching states frequently, try and read as much data as possible ‣ trade-off between too much pre-fetch and battery drain ‣ google recommends prefetching data that you will initiate in the next 2 to 5 minutes, and in the order of 1-5 MB size • batch data ‣ do data send/receive in batches rather than on-demand ‣ eg: batch analytics information, rather than sending them as they are collected
  • 18. best practices for network • detect network connection ‣ avoid connection attempts if no network is active • avoid polling and use GCM when possible ‣ avoids multiple connections ‣ reduces the number of device state changes • using inexact timers ‣ AlarmManager.setInexactRepeating() ‣ use ELAPSED_REALTIME instead of ELAPED_REALTIME_WAKEUP
  • 19. best practices for network • detect network connection ‣ avoid connection attempts if no network is active • avoid polling and use GCM when possible ‣ avoids multiple connections ‣ reduces the number of device state changes • using inexact timers ‣ AlarmManager.setInexactRepeating() ‣ use ELAPSED_REALTIME instead of ELAPED_REALTIME_WAKEUP
  • 20. best practices for network • detect network connection ‣ avoid connection attempts if no network is active • avoid polling and use GCM when possible ‣ avoids multiple connections ‣ reduces the number of device state changes • using inexact timers ‣ AlarmManager.setInexactRepeating() ‣ use ELAPSED_REALTIME instead of ELAPED_REALTIME_WAKEUP
  • 21. best practices for network • use caching ‣ avoid redundant downloads • varying download pattern ‣ modify pattern based on connection type ‣ download more data per session on faster networks ❖ change the aggression of pre-fetch
  • 22. best practices for network • use caching ‣ avoid redundant downloads • varying download pattern ‣ modify pattern based on connection type ‣ download more data per session on faster networks ❖ change the aggression of pre-fetch
  • 23. other tips (from google) • monitor charge level and state • monitor and determine the docking state and type • monitor the connectivity state • manipulate broadcast receivers on-demand
  • 24. other tips (from google) • monitor charge level and state • monitor and determine the docking state and type • monitor the connectivity state • manipulate broadcast receivers on-demand
  • 25. other tips (from google) • monitor charge level and state • monitor and determine the docking state and type • monitor the connectivity state • manipulate broadcast receivers on-demand
  • 26. other tips (from google) • monitor charge level and state • monitor and determine the docking state and type • monitor the connectivity state • manipulate broadcast receivers on-demand
  • 27. if your audience has not gone to sleep yet & organizers have...
  • 28. screen • color matters! ‣ esp on OLED screens • darker the color, lesser the consumption • brightness levels have more impact ‣ refer to - http://stackoverflow.com/ Chameleon: Color Transformation on OLED Displays questions/5032588/cant-apply-system- screen-brightness-programmatically-in- android ‣ programmatically reduce brightness if its suits your app/activity
  • 29. screen • color matters! ‣ esp on OLED screens • darker the color, lesser the consumption • brightness levels have more impact ‣ refer to - http://stackoverflow.com/ Chameleon: Color Transformation on OLED Displays questions/5032588/cant-apply-system- screen-brightness-programmatically-in- android ‣ programmatically reduce brightness if its suits your app/activity
  • 30. screen • color matters! ‣ esp on OLED screens • darker the color, lesser the consumption • brightness levels have more impact ‣ refer to - http://stackoverflow.com/ Chameleon: Color Transformation on OLED Displays questions/5032588/cant-apply-system- screen-brightness-programmatically-in- android ‣ programmatically reduce brightness if its suits your app/activity
  • 31. cpu • typically runs on various frequencies • frequency transition controlled by governor policy installed • same concept as on linux based PCs, but typically more aggressive • system drops down to ‘deep sleep’ as much as it can • frequencies are scaled based of usage (C) CPUspy
  • 32. cpu • typically runs on various frequencies • frequency transition controlled by governor policy installed • same concept as on linux based PCs, but typically more aggressive • system drops down to ‘deep sleep’ as much as it can • frequencies are scaled based of usage (C) CPUspy
  • 33. cpu • typically runs on various frequencies • frequency transition controlled by governor policy installed • same concept as on linux based PCs, but typically more aggressive • system drops down to ‘deep sleep’ as much as it can • frequencies are scaled based of usage (C) CPUspy
  • 34. cpu • typically runs on various frequencies • frequency transition controlled by governor policy installed • same concept as on linux based PCs, but typically more aggressive • system drops down to ‘deep sleep’ as much as it can • frequencies are scaled based of usage (C) CPUspy
  • 35. cpu • typically runs on various frequencies • frequency transition controlled by governor policy installed • same concept as on linux based PCs, but typically more aggressive • system drops down to ‘deep sleep’ as much as it can • frequencies are scaled based of usage (C) CPUspy
  • 36. best practices for cpu • wakelocks are your friend, but your users worst nightmare! • use them only if really needed and ensure they are removed as soon as possible • use ‘android:keepScreenOn’ property in your manifest instead of doing it programmatically • if possible, spread out your computationally intensive job
  • 37. best practices for cpu • wakelocks are your friend, but your users worst nightmare! • use them only if really needed and ensure they are removed as soon as possible • use ‘android:keepScreenOn’ property in your manifest instead of doing it programmatically • if possible, spread out your computationally intensive job
  • 38. best practices for cpu • wakelocks are your friend, but your users worst nightmare! • use them only if really needed and ensure they are removed as soon as possible • use ‘android:keepScreenOn’ property in your manifest instead of doing it programmatically • if possible, spread out your computationally intensive job
  • 39. best practices for cpu • wakelocks are your friend, but your users worst nightmare! • use them only if really needed and ensure they are removed as soon as possible • use ‘android:keepScreenOn’ property in your manifest instead of doing it programmatically • if possible, spread out your computationally intensive job
  • 40. best practices for cpu • gpu typically consumes more power than cpu ‣ avoid floating point math where possible • use gpu for data-parallel tasks like video/image processing • use algorithms that consume less CPU cycle ‣ O(n log n) vs O(n 2) algorithms goal - keep the freq to the lowest level or reduce the number of cycles
  • 41. best practices for cpu • gpu typically consumes more power than cpu ‣ avoid floating point math where possible • use gpu for data-parallel tasks like video/image processing • use algorithms that consume less CPU cycle ‣ O(n log n) vs O(n 2) algorithms goal - keep the freq to the lowest level or reduce the number of cycles
  • 42. best practices for cpu • gpu typically consumes more power than cpu ‣ avoid floating point math where possible • use gpu for data-parallel tasks like video/image processing • use algorithms that consume less CPU cycle ‣ O(n log n) vs O(n 2) algorithms goal - keep the freq to the lowest level or reduce the number of cycles
  • 43. best practices (others) • gps is another very expensive component ‣ avoid fine grained locations if possible • use power efficient SDKs ‣ eg: Location SDK from SkyhookWireless
  • 44. best practices (others) • gps is another very expensive component ‣ avoid fine grained locations if possible • use power efficient SDKs ‣ eg: Location SDK from SkyhookWireless
  • 45. references 1. http://developer.android.com/training/efficient-downloads/index.html 2. http://developer.android.com/training/monitoring-device-state/ index.html 3. http://dl.google.com/io/2009/pres/W_0300_CodingforLife- BatteryLifeThatIs.pdf 4. http://people.cs.umass.edu/~arun/papers/TailEnder.pdf 5. http://chipdesignmag.com/lpd/absolute-power/2012/05/10/4g-lte-vs-3g/ 6. http://thisweekinbatteries.blogspot.in/ 7. http://www.ruf.rice.edu/~mobile/publications/dong10chameleon- demo.pdf
  • 46. thank you this presentation has been shared @ http://www.slideshare.net/littleeye/power-optimization-for-android-developers http://www.littleeye.co/blog kumar@littleeye.co

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n