SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
Tuning Android
 Applications
    (part deux)


    Copyright © 2011 CommonsWare, LLC
What I'll Be Yammering About
●   You Missed It
    –   Traceview
    –   MAT
●   Now
    –   Battery and Bandwidth
    –   Top Ten Tuning Tips


                      Copyright © 2011 CommonsWare, LLC
Bandwidth &
  Battery
Measurement
   Copyright © 2011 CommonsWare, LLC
Bandwidth Issues
●   Too Much In General
    –   Users on metered plans pay through the nose
    –   Users on “unlimited” plans hit the, um, limits
●   Too Much At Poor Times
    –   While the user is trying to use bandwidth for
        other purposes (e.g., streaming video)
    –   When the user is on mobile data instead of WiFi

                       Copyright © 2011 CommonsWare, LLC
Measuring Bandwidth
●   Option #1: Find an App
    –   Bandwidth Monitor
    –   Traffic Monitor
    –   Network Traffic Detail
    –   Etc.




                      Copyright © 2011 CommonsWare, LLC
Measuring Bandwidth
●   Option #2: TrafficStats
    –   Static methods to report bandwidth
        consumption to date
         ●   Entire device, all networks
         ●   Entire device, by network (mobile data vs. WiFi)
         ●   Per UID (all, TCP vs. UDP)
    –   Transmit (Tx) vs. Receive (Rx)
    –   Bytes vs. Segments vs. Packets
                           Copyright © 2011 CommonsWare, LLC
Measuring Bandwidth
●   Option #1: TrafficStats
    –   Take snapshots at points in time
         ●   Delta between values = consumed bandwidth
    –   Two Integration Styles
         ●   In test suites, to determine if your mitigation
             strategies are working
         ●   In production, for traffic shaping


                           Copyright © 2011 CommonsWare, LLC
Measuring Bandwidth
●   Option #2: ICS Settings
    –   Chart of bandwidth consumed
    –   Ability to see per-application and set limits
    –   Downside: hardware only?




                       Copyright © 2011 CommonsWare, LLC
Measuring Bandwidth
●   Option #3: Wireshark
    –   Requires rooted device or integration at WiFi
        access point
    –   Gives you full logs of all activity
         ●   Determine not only how much bandwidth, but what
             it is being used for




                         Copyright © 2011 CommonsWare, LLC
Issues with Battery
●   You Get Blamed
    –   Your app shows up on the battery consumption
        Settings screen, users get irritated
●   You Want to be Friendly
    –   Dynamically adjust your behavior to deal with
        low battery conditions



                      Copyright © 2011 CommonsWare, LLC
Measuring Power Usage
●   Qualcomm MDP and Trepn
    –   Pros
         ●   Highly detailed information, down to the component
             and process
         ●   Graphs (on-device) and logs (for offline analysis)
    –   Cons
         ●   Trepn only works on Qualcomm MDP
         ●   MDP is frakkin' expensive (~$1,400)

                           Copyright © 2011 CommonsWare, LLC
Measuring Power Usage
●   PowerTutor
    –   Pros
         ●   Free!
    –   Cons
         ●   Accuracy so-so for Nexus One, worse for other
             modern devices
         ●   No logging


                          Copyright © 2011 CommonsWare, LLC
Measuring Power Usage
●   Settings' Battery “Blame Screen”
    –   If you don't show up here, how bad can it be?
●   adb shell dumpsys batteryinfo
    –   Tons of data
    –   Difficult to grok




                       Copyright © 2011 CommonsWare, LLC
Top Ten Tuning
     Tips
              (totally)




    Copyright © 2011 CommonsWare, LLC
Measure, Measure, Measure
●   Don't Start Hacking Away
    –   Example: randomly removing accessor methods
●   Identify Problem Area First
    –   What is too slow, or leaking, or whatever?
●   Cure What Ails Ya
    –   Premature optimization helps nobody


                      Copyright © 2011 CommonsWare, LLC
Recycling: It's Good for the “Urf!”
●   Adapter View Recycling
    –   Rows in lists
    –   Pages in ViewPager
●   Bitmaps
    –   If it has a recycle() method, use it!




                        Copyright © 2011 CommonsWare, LLC
Activities Stay Active
●   Activities Not Destroyed to Free Heap Space
    –   BACK button, finish(), configuration change
    –   Process termination (may not call
        onDestroy())
●   Mitigation Strategies
    –   Activity recycling
    –   Time-based belt-tightening

                       Copyright © 2011 CommonsWare, LLC
Threads: More Than a Panacea, But...
●   The Good
    –   Move stuff off the main application thread
●   The Bad
    –   Most devices in use still single core
    –   Threads consume more CPU time
●   The Ugly
    –   Thrashing among too many threads
                       Copyright © 2011 CommonsWare, LLC
Robbing Peter to Pay Paul
●   Threads
●   Caching
    –   Trading off RAM to save disk I/O, or CPU time, or
        bandwidth
    –   Trading off disk space to save bandwidth, or CPU
        time
    –   Ensure you don't trade too much (whack-a-mole)

                      Copyright © 2011 CommonsWare, LLC
Hardware Is Real. Really Real.
●   Emulator Is Slower At...
    –   CPU
●   Emulator Is Faster At...
    –   Disk I/O
    –   Network (usually, compared to wireless data)
●   Net: Test on Hardware Too


                      Copyright © 2011 CommonsWare, LLC
Globals, Processes, and Cavemen
●   Global Scope: Risk of Memory Leaks
    –   Tempting as central holding spot for data
    –   Reason why considered bad form in standard
        Java development
●   Extra Processes: Just Say No!
    –   Usually add no value
    –   Consume extra RAM, CPU time

                      Copyright © 2011 CommonsWare, LLC
YAGNI
●   You Ain't Gonna Need It
    –   Downloading and caching data that might not
        get used
    –   Fancy plug-in architecture for an app with no
        plug-ins
●   Constrained Devices Need Constrained Plans


                      Copyright © 2011 CommonsWare, LLC
Don't Be Chatty
●   JNI/NDK
    –   Each context switch from Java to C/C++ (and
        back) adds overhead
●   IPC
    –   Every call between processes adds overhead
    –   Includes sendBroadcast()!
●   Aim For Coarse-Grained Protocols

                      Copyright © 2011 CommonsWare, LLC
Lather. Rinse. Repeat.
●   Keep Testing and Tuning
    –   Major application releases
    –   Major OS releases
         ●   Example: rumored AsyncTask thread pool shrinkage
    –   Major device style releases
         ●   Example: multi-core



                          Copyright © 2011 CommonsWare, LLC

Más contenido relacionado

Destacado (7)

Predictions Sure To Go Wrong (droidcon UK 2011)
Predictions Sure To Go Wrong (droidcon UK 2011)Predictions Sure To Go Wrong (droidcon UK 2011)
Predictions Sure To Go Wrong (droidcon UK 2011)
 
Tuning Android Applications (Part One)
Tuning Android Applications (Part One)Tuning Android Applications (Part One)
Tuning Android Applications (Part One)
 
Mastering the Master Detail Pattern
Mastering the Master Detail PatternMastering the Master Detail Pattern
Mastering the Master Detail Pattern
 
When Microwatts Are Precious: Battery Tips for Wearable Apps
When Microwatts Are Precious: Battery Tips for Wearable AppsWhen Microwatts Are Precious: Battery Tips for Wearable Apps
When Microwatts Are Precious: Battery Tips for Wearable Apps
 
Getting Android Developers for Your Wearables
Getting Android Developers for Your WearablesGetting Android Developers for Your Wearables
Getting Android Developers for Your Wearables
 
Gradle and Your Android Wearable Projects
Gradle and Your Android Wearable ProjectsGradle and Your Android Wearable Projects
Gradle and Your Android Wearable Projects
 
Android Security: Defending Your Users
Android Security: Defending Your UsersAndroid Security: Defending Your Users
Android Security: Defending Your Users
 

Similar a Tuning Android Applications (Part Deux)

Mobile Performance Testing - Testing the Server
Mobile Performance Testing  - Testing the ServerMobile Performance Testing  - Testing the Server
Mobile Performance Testing - Testing the Server
XBOSoft
 
ch1.pdfsystem programiming for engineeering in gct coimbator4e
ch1.pdfsystem programiming for engineeering in gct  coimbator4ech1.pdfsystem programiming for engineeering in gct  coimbator4e
ch1.pdfsystem programiming for engineeering in gct coimbator4e
EsakyS
 
Open_IoT_Summit-Europe-2016-Building_a_Drone_from_scratch
Open_IoT_Summit-Europe-2016-Building_a_Drone_from_scratchOpen_IoT_Summit-Europe-2016-Building_a_Drone_from_scratch
Open_IoT_Summit-Europe-2016-Building_a_Drone_from_scratch
Igor Stoppa
 
HIT3328 - Chapter01 - Platforms and Devices
HIT3328 - Chapter01 - Platforms and DevicesHIT3328 - Chapter01 - Platforms and Devices
HIT3328 - Chapter01 - Platforms and Devices
Yhal Htet Aung
 

Similar a Tuning Android Applications (Part Deux) (20)

Emc new1
Emc new1Emc new1
Emc new1
 
DataCore Technology Overview
DataCore Technology OverviewDataCore Technology Overview
DataCore Technology Overview
 
Exposing and Fixing Common App Performance Problems
Exposing and Fixing Common App Performance ProblemsExposing and Fixing Common App Performance Problems
Exposing and Fixing Common App Performance Problems
 
Designing Scalable Applications
Designing Scalable ApplicationsDesigning Scalable Applications
Designing Scalable Applications
 
Simplifying debugging for multi-core Linux devices and low-power Linux clusters
Simplifying debugging for multi-core Linux devices and low-power Linux clusters Simplifying debugging for multi-core Linux devices and low-power Linux clusters
Simplifying debugging for multi-core Linux devices and low-power Linux clusters
 
Beyond Traditional Mobile Testing
Beyond Traditional Mobile TestingBeyond Traditional Mobile Testing
Beyond Traditional Mobile Testing
 
Performance Testing in a Mobile World
Performance Testing in a Mobile WorldPerformance Testing in a Mobile World
Performance Testing in a Mobile World
 
JVM Support for Multitenant Applications - Steve Poole (IBM)
JVM Support for Multitenant Applications - Steve Poole (IBM)JVM Support for Multitenant Applications - Steve Poole (IBM)
JVM Support for Multitenant Applications - Steve Poole (IBM)
 
Debugging Apache Hadoop YARN Cluster in Production
Debugging Apache Hadoop YARN Cluster in ProductionDebugging Apache Hadoop YARN Cluster in Production
Debugging Apache Hadoop YARN Cluster in Production
 
X Means Y
X Means YX Means Y
X Means Y
 
Mobile Performance Testing - Testing the Server
Mobile Performance Testing  - Testing the ServerMobile Performance Testing  - Testing the Server
Mobile Performance Testing - Testing the Server
 
ch1.pdfsystem programiming for engineeering in gct coimbator4e
ch1.pdfsystem programiming for engineeering in gct  coimbator4ech1.pdfsystem programiming for engineeering in gct  coimbator4e
ch1.pdfsystem programiming for engineeering in gct coimbator4e
 
Ch1
Ch1Ch1
Ch1
 
Zero Downtime JEE Architectures
Zero Downtime JEE ArchitecturesZero Downtime JEE Architectures
Zero Downtime JEE Architectures
 
Open_IoT_Summit-Europe-2016-Building_a_Drone_from_scratch
Open_IoT_Summit-Europe-2016-Building_a_Drone_from_scratchOpen_IoT_Summit-Europe-2016-Building_a_Drone_from_scratch
Open_IoT_Summit-Europe-2016-Building_a_Drone_from_scratch
 
The Java Evolution Mismatch by Gil Tene, CTO at Azul Systems
The Java Evolution Mismatch by Gil Tene, CTO at Azul SystemsThe Java Evolution Mismatch by Gil Tene, CTO at Azul Systems
The Java Evolution Mismatch by Gil Tene, CTO at Azul Systems
 
ch1.ppt
ch1.pptch1.ppt
ch1.ppt
 
HIT3328 - Chapter01 - Platforms and Devices
HIT3328 - Chapter01 - Platforms and DevicesHIT3328 - Chapter01 - Platforms and Devices
HIT3328 - Chapter01 - Platforms and Devices
 
Nonfunctional Testing: Examine the Other Side of the Coin
Nonfunctional Testing: Examine the Other Side of the CoinNonfunctional Testing: Examine the Other Side of the Coin
Nonfunctional Testing: Examine the Other Side of the Coin
 
ch1.pptx
ch1.pptxch1.pptx
ch1.pptx
 

Más de CommonsWare

Más de CommonsWare (20)

The Action Bar: Front to Back
The Action Bar: Front to BackThe Action Bar: Front to Back
The Action Bar: Front to Back
 
Secondary Screen Support Using DisplayManager
Secondary Screen Support Using DisplayManagerSecondary Screen Support Using DisplayManager
Secondary Screen Support Using DisplayManager
 
Not Quite As Painful Threading
Not Quite As Painful ThreadingNot Quite As Painful Threading
Not Quite As Painful Threading
 
Android Development: The 20,000-Foot View
Android Development: The 20,000-Foot ViewAndroid Development: The 20,000-Foot View
Android Development: The 20,000-Foot View
 
Maps V2... And You!
Maps V2... And You!Maps V2... And You!
Maps V2... And You!
 
A Deep Dive Into ViewPager
A Deep Dive Into ViewPagerA Deep Dive Into ViewPager
A Deep Dive Into ViewPager
 
Second-Screen Support in Android 4.2
Second-Screen Support in Android 4.2Second-Screen Support in Android 4.2
Second-Screen Support in Android 4.2
 
Integrate Android Apps and Web Apps
Integrate Android Apps and Web AppsIntegrate Android Apps and Web Apps
Integrate Android Apps and Web Apps
 
From Android to the Mobile Web
From Android to the Mobile WebFrom Android to the Mobile Web
From Android to the Mobile Web
 
The Wonderful World of Wearables
The Wonderful World of WearablesThe Wonderful World of Wearables
The Wonderful World of Wearables
 
Securing User Data with SQLCipher
Securing User Data with SQLCipherSecuring User Data with SQLCipher
Securing User Data with SQLCipher
 
Beaming Data to Devices with NFC
Beaming Data to Devices with NFCBeaming Data to Devices with NFC
Beaming Data to Devices with NFC
 
What's New in Jelly Bean
What's New in Jelly BeanWhat's New in Jelly Bean
What's New in Jelly Bean
 
Making Money at Mobile: 60 Business Models
Making Money at Mobile: 60 Business ModelsMaking Money at Mobile: 60 Business Models
Making Money at Mobile: 60 Business Models
 
AppsWorld Keynote
AppsWorld KeynoteAppsWorld Keynote
AppsWorld Keynote
 
App Integration (Revised and Updated)
App Integration (Revised and Updated)App Integration (Revised and Updated)
App Integration (Revised and Updated)
 
Rich Text Editing and Beyond
Rich Text Editing and BeyondRich Text Editing and Beyond
Rich Text Editing and Beyond
 
App integration: Strategies and Tactics
App integration: Strategies and TacticsApp integration: Strategies and Tactics
App integration: Strategies and Tactics
 
Backwards Compatibility: Strategies and Tactics
Backwards Compatibility: Strategies and TacticsBackwards Compatibility: Strategies and Tactics
Backwards Compatibility: Strategies and Tactics
 
Android Hardware That's A Little Bit... Odd
Android Hardware That's A Little Bit... OddAndroid Hardware That's A Little Bit... Odd
Android Hardware That's A Little Bit... Odd
 

Último

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
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
 

Último (20)

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
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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, ...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
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
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
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
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
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
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

Tuning Android Applications (Part Deux)

  • 1. Tuning Android Applications (part deux) Copyright © 2011 CommonsWare, LLC
  • 2. What I'll Be Yammering About ● You Missed It – Traceview – MAT ● Now – Battery and Bandwidth – Top Ten Tuning Tips Copyright © 2011 CommonsWare, LLC
  • 3. Bandwidth & Battery Measurement Copyright © 2011 CommonsWare, LLC
  • 4. Bandwidth Issues ● Too Much In General – Users on metered plans pay through the nose – Users on “unlimited” plans hit the, um, limits ● Too Much At Poor Times – While the user is trying to use bandwidth for other purposes (e.g., streaming video) – When the user is on mobile data instead of WiFi Copyright © 2011 CommonsWare, LLC
  • 5. Measuring Bandwidth ● Option #1: Find an App – Bandwidth Monitor – Traffic Monitor – Network Traffic Detail – Etc. Copyright © 2011 CommonsWare, LLC
  • 6. Measuring Bandwidth ● Option #2: TrafficStats – Static methods to report bandwidth consumption to date ● Entire device, all networks ● Entire device, by network (mobile data vs. WiFi) ● Per UID (all, TCP vs. UDP) – Transmit (Tx) vs. Receive (Rx) – Bytes vs. Segments vs. Packets Copyright © 2011 CommonsWare, LLC
  • 7. Measuring Bandwidth ● Option #1: TrafficStats – Take snapshots at points in time ● Delta between values = consumed bandwidth – Two Integration Styles ● In test suites, to determine if your mitigation strategies are working ● In production, for traffic shaping Copyright © 2011 CommonsWare, LLC
  • 8. Measuring Bandwidth ● Option #2: ICS Settings – Chart of bandwidth consumed – Ability to see per-application and set limits – Downside: hardware only? Copyright © 2011 CommonsWare, LLC
  • 9. Measuring Bandwidth ● Option #3: Wireshark – Requires rooted device or integration at WiFi access point – Gives you full logs of all activity ● Determine not only how much bandwidth, but what it is being used for Copyright © 2011 CommonsWare, LLC
  • 10. Issues with Battery ● You Get Blamed – Your app shows up on the battery consumption Settings screen, users get irritated ● You Want to be Friendly – Dynamically adjust your behavior to deal with low battery conditions Copyright © 2011 CommonsWare, LLC
  • 11. Measuring Power Usage ● Qualcomm MDP and Trepn – Pros ● Highly detailed information, down to the component and process ● Graphs (on-device) and logs (for offline analysis) – Cons ● Trepn only works on Qualcomm MDP ● MDP is frakkin' expensive (~$1,400) Copyright © 2011 CommonsWare, LLC
  • 12. Measuring Power Usage ● PowerTutor – Pros ● Free! – Cons ● Accuracy so-so for Nexus One, worse for other modern devices ● No logging Copyright © 2011 CommonsWare, LLC
  • 13. Measuring Power Usage ● Settings' Battery “Blame Screen” – If you don't show up here, how bad can it be? ● adb shell dumpsys batteryinfo – Tons of data – Difficult to grok Copyright © 2011 CommonsWare, LLC
  • 14. Top Ten Tuning Tips (totally) Copyright © 2011 CommonsWare, LLC
  • 15. Measure, Measure, Measure ● Don't Start Hacking Away – Example: randomly removing accessor methods ● Identify Problem Area First – What is too slow, or leaking, or whatever? ● Cure What Ails Ya – Premature optimization helps nobody Copyright © 2011 CommonsWare, LLC
  • 16. Recycling: It's Good for the “Urf!” ● Adapter View Recycling – Rows in lists – Pages in ViewPager ● Bitmaps – If it has a recycle() method, use it! Copyright © 2011 CommonsWare, LLC
  • 17. Activities Stay Active ● Activities Not Destroyed to Free Heap Space – BACK button, finish(), configuration change – Process termination (may not call onDestroy()) ● Mitigation Strategies – Activity recycling – Time-based belt-tightening Copyright © 2011 CommonsWare, LLC
  • 18. Threads: More Than a Panacea, But... ● The Good – Move stuff off the main application thread ● The Bad – Most devices in use still single core – Threads consume more CPU time ● The Ugly – Thrashing among too many threads Copyright © 2011 CommonsWare, LLC
  • 19. Robbing Peter to Pay Paul ● Threads ● Caching – Trading off RAM to save disk I/O, or CPU time, or bandwidth – Trading off disk space to save bandwidth, or CPU time – Ensure you don't trade too much (whack-a-mole) Copyright © 2011 CommonsWare, LLC
  • 20. Hardware Is Real. Really Real. ● Emulator Is Slower At... – CPU ● Emulator Is Faster At... – Disk I/O – Network (usually, compared to wireless data) ● Net: Test on Hardware Too Copyright © 2011 CommonsWare, LLC
  • 21. Globals, Processes, and Cavemen ● Global Scope: Risk of Memory Leaks – Tempting as central holding spot for data – Reason why considered bad form in standard Java development ● Extra Processes: Just Say No! – Usually add no value – Consume extra RAM, CPU time Copyright © 2011 CommonsWare, LLC
  • 22. YAGNI ● You Ain't Gonna Need It – Downloading and caching data that might not get used – Fancy plug-in architecture for an app with no plug-ins ● Constrained Devices Need Constrained Plans Copyright © 2011 CommonsWare, LLC
  • 23. Don't Be Chatty ● JNI/NDK – Each context switch from Java to C/C++ (and back) adds overhead ● IPC – Every call between processes adds overhead – Includes sendBroadcast()! ● Aim For Coarse-Grained Protocols Copyright © 2011 CommonsWare, LLC
  • 24. Lather. Rinse. Repeat. ● Keep Testing and Tuning – Major application releases – Major OS releases ● Example: rumored AsyncTask thread pool shrinkage – Major device style releases ● Example: multi-core Copyright © 2011 CommonsWare, LLC