Tuning Android Applications (Part Deux)

1,550 views

Published on

From 2011's AnDevCon II conference

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,550
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
56
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Tuning Android Applications (Part Deux)

  1. 1. Tuning Android Applications (part deux) Copyright © 2011 CommonsWare, LLC
  2. 2. What Ill Be Yammering About● You Missed It – Traceview – MAT● Now – Battery and Bandwidth – Top Ten Tuning Tips Copyright © 2011 CommonsWare, LLC
  3. 3. Bandwidth & BatteryMeasurement Copyright © 2011 CommonsWare, LLC
  4. 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. 5. Measuring Bandwidth● Option #1: Find an App – Bandwidth Monitor – Traffic Monitor – Network Traffic Detail – Etc. Copyright © 2011 CommonsWare, LLC
  6. 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. 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. 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. 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. 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. 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. 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. 13. Measuring Power Usage● Settings Battery “Blame Screen” – If you dont show up here, how bad can it be?● adb shell dumpsys batteryinfo – Tons of data – Difficult to grok Copyright © 2011 CommonsWare, LLC
  14. 14. Top Ten Tuning Tips (totally) Copyright © 2011 CommonsWare, LLC
  15. 15. Measure, Measure, Measure● Dont 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. 16. Recycling: Its 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. 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. 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. 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 dont trade too much (whack-a-mole) Copyright © 2011 CommonsWare, LLC
  20. 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. 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. 22. YAGNI● You Aint 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. 23. Dont 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. 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

×