Your SlideShare is downloading. ×
0
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Tuning Android Applications (Part Deux)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Tuning Android Applications (Part Deux)

1,314

Published on

From 2011's AnDevCon II conference

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,314
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
55
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Tuning Android Applications (part deux) Copyright © 2011 CommonsWare, LLC
  • 2. What Ill Be Yammering About● You Missed It – Traceview – MAT● Now – Battery and Bandwidth – Top Ten Tuning Tips Copyright © 2011 CommonsWare, LLC
  • 3. Bandwidth & BatteryMeasurement 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 dont 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● 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. 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. 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 dont 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 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. 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. 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

×