Summary
This was probably the most technical chapter so far. Threads, game loops, timing try and catch blocks, using interfaces, the activity lifecycle, and so on… that's an awfully long list of topics to cram into a chapter. If the exact interrelationships between these things are not entirely clear, it is not a problem. All you need to know is that when the player starts and stops the game, the PongActivity class will handle starting and stopping the thread by calling the PongGame class's pause and resume methods. It achieves this via the overridden onPause and onResume methods, which are called by the operating system.
Once the thread is running, the code inside the run method executes alongside the user interface thread that is listening for player input. Once we call the update and draw methods from the run method, at the same time as keeping track of how long each frame is taking, our game is ready to rock and roll. We just need to add some game objects to...