With a great variety of tools for optimizing your Android apps, it's easy to get lost and find it hard to even start working on the problem. In this talk, I'll cover how to approach a performance issue by picking the right tool for the job, analyzing the data and track down the culprit. I'll show case studies using Systrace, Traceview, Hierarchy Viewer, Allocation Tracker, Eclipse MAT and others, demonstrating variety of problems that many apps suffer from, and how to solve them.
I'll also cover how to find problems with the app's layouts, which directly affects its performance:
- Overdraw - what is it, how the framework helps to avoid it and what can we do to reduce it.
- Bad behaving layouts - Find them and reconstruct them to bring the same result with less performance hit.
- Custom views - how can they hurt us and what can we do about that.
Besides tracking existing problems, we'll talk about how to write better performing apps in the first place:
- Hardware acceleration is not a silver bullet. In order maximize its potential, we need to know how to properly leverage hardware acceleration for every app's unique UI.
- Bitmap hacks to optimize the use of bitmaps in the app. Using an image loading library is not always enough, and there could be a better way to optimize the bitmap usage for your app.
- General and less popular tips that many don't know about and should.
I'll share some of my "war stories" in the talk, to give some real-life examples, and showcase how can anyone start optimizing their apps the next day.
With a great passion for problem solving, I've been a software engineer for over 14 years, where I worked with Java, C++, Python and many other technologies. In the past 5 years, I've been focusing on Android and experienced every aspect of it - from custom views to AOSP development. I love creating great UI with smooth animations, optimizing apps/platform performance and delivering a great user experience. I gave several talks over the years about performance optimization and Android in general. I write about Android and other geeky stuff on my blog (http://blog.udinic.com) and I open sourced most of my small projects (https://github.com/Udinic), to help the Android community with some of the least understood parts in the platform. Today I'm the head of Android development for Samsung NYC. Before that, I was the lead Android engineer for Any.do (http://any.do), where I built Any.do's Android client and the Calendar app - "Cal".