Chapter 1. Building Responsive Android Applications
The Android operating system has, at its heart, a heavily modified Linux kernel designed to securely and efficiently run many process virtual machines on devices with relatively limited resources.
To build Android applications that run smoothly and responsively in these resource-constrained environments, we need to arm ourselves with an understanding of the options available, and how, when, and why to use them—this is the essence of this book.
However, before we do that, we'll briefly consider why we need to concern ourselves at all. We'll see how serious Google is about the efficiency of the platform, explore the Android process model and its implications for programmers and end users, and examine some of the measures that the Android team have put in place to protect users from apps that behave badly.
To conclude, we'll discuss the general approach used throughout the rest of the book to keep applications responsive using asynchronous programming and concurrency, and its associated challenges and benefits.
In this chapter, we will cover the following topics:
Introducing the Dalvik Virtual Machine
Memory sharing and the Zygote
Understanding the Android thread model
The main thread
Unresponsive apps and the ANR dialog
Maintaining responsiveness
Concurrency in Android