Anyone who is doing Android development needs to understand how asynchronous operations works. Even if you’re not doing any work on a background thread (highly unlikely!), you will still be depending on asynchronous operation as that is how the lifecycle of activities are implemented. Despite being such a central part of Android development, I’m surprised how much this concept is misunderstood. In my experience, mistakes due to badly implemented asynchronous behavior is the most common reason for bugs and crashes on Android. With this in mind, I decided to write a post about how we should approach this and handle on Android, regardless if you stick to the platform APIs or use something like RxJava.