I've been working on Android apps at Google for about two years. In that time I've worked on a diverse set of codebases - from small, tightly-contained internal tools that only target Lollipop and newer, to extremely complicated apps with large development teams, such as Google Maps, and even system-level code such as the Activity Manager for Android Auto. In that time, I've also seen a lot of new team members come up to speed, and found myself consistently giving the same advice to help them get there quickly. Here's my top three tips for becoming productive whilst developing for Android.
1. Learn how to navigate through code in your IDE
Rule number 1 of writing code is that you'll spend more time reading code than actually writing it. If you're using Android Studio (it's pretty good!), you can make this easier by learning how to navigate through code semantically. Basically, take a look at the Navigate menu and make yourself familiar with the options there. My most commonly used options:
- Go to Definition
- Find superclasses / Find subclasses
- Show call hierarchy
This advice was something my manager gave me when I first started programming Android, and it's been the single biggest thing that improved my productivity developing for the platform. You'll find yourself using these a lot, so it's worth remapping them to keystrokes that work for you as well.
2. Read the source
Android's frameworks aren't always well-documented, but the most complete kind of documentation is source code, and the source code is available. Make sure you download the framework source as part of the Android SDK, and then when you use the code navigation features in Android Studio, you can jump right into the Android source and see what's happening under the hood. You can install the Android source by checking the Sources box in the SDK manager. From the Android Studio menu, choose Tools –> SDK Manager –> Show Package Details, and then check the Sources option:
3. Take the time to really understand lifecycle well
Android lifecycle is one of the most confusing paradigms I've ever worked with in programming. Unfortunately, it's also crucial to the platform, so it's important to make sure you understand it well so you don't introduce subtle bugs.
As an example, I've seen lots of code that resumes and pauses rendering in
onPause() respectively. These callbacks don't indicate visibility, though, they indicate that the Activity is in the foreground, and that the user can interact with the app. This results in a problem where rendering stops when a dialog pops up over the top, for example. Instead, rendering should be started and stopped in
onStop(), respectively, which indicate when the Activity is visible at all.
The best guide to Android lifecycle is in the Android documentation for the
Hopefully these three tips will help you to get up and running quicker with Android development! Let me know if you've got any other advice that really helped you to get started.