SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
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

Contenu connexe

En vedette (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
 

Similaire à 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
 

Similaire à 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
 

Plus de CommonsWare

Plus 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
 

Dernier

+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@
 
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
 

Dernier (20)

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
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...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
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
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
"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 ...
 
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...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
+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...
 
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
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
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
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 

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