Authors: Carmen Delessio, Lauren Darcey & Shane Conder
Audience: Java programmers moving to Android
Reviewer: Harry Fairhead
Android is one of the most complex of systems to create programs for. Can you really learn how to develope apps in 24 hours?
No of course not, but dividing the task into small chunks makes good sense. This book follows the standard 24 hour format of short chapters and exercises designed to be completed in an hour, although in most cases this is unlikely.
You need to be a fairly competent Java programmer to get anything at all from this book. If you don't program in Java you might get by if you know another object-oriented language such as C++ or C# and are willing to look things up when you don't understand.
It starts off with getting your development environment ready and for this is uses the standard Eclipse and ADT setup. By the end of the lesson you have your first "hello world" app running but you probably don't have much idea what it is all about. The second hour introduces the idea of an Activity. This complicates things unnecessarily by introducing the idea of multiple Activities and Intents before the basic structure and lifecycle of the Activity is well understood.
The next hour explores the idea of resources. This isn't a bad idea but it suffers from the problem of going too deep before the workings of the UI have been described. The next hour explains how to handle screen resolutions and orientations - again before the UI has been described.
What is strange is that Part II of the book is all about the UI but many of the ideas introduced in Part I only really make sense after you have mastered the UI.
Part II forms a short book-within-a-book about the basics of the Android UI. It explains Layouts, the basic controls, Action Bar, menus, Fragments, dialogs, Lists, Grids and preferences. It's a reasonable summary, but it hardly goes beyond what you can find in the documentation and it doesn't really explain much of what it going on.
Part III is about data access. Five hours worth of general data handling using SQLite and the file system. It also covers building a content provider and putting it all together to create an app.
Part IV is a collection of general APIs and facilities that don't fit anywhere else. We learn about contacts and the calender, location, localization, using the camera, media both audio and video and using the Facebook SDK.
The final part deals with finishing touches and publishing your app.
The biggest problem with this book is the way that it jumps the gun on ideas that haven't yet been introduced. This is worst in the first few lessons where key ideas are explained at a point where the reader just can't understand or appreciate what they are all about.
There is also a problem caused by the way the code is presented incrementally. This sometimes makes harder to see what is going on, but as long as you are a Java programmer and are following what is happening then you should be able to understand. However, if you are a complete beginner then you might easily get confused.
The book gets better as it goes on. The part that deals with the UI is a reasonable account of the Android UI, but it really only acts as a sumeary of the documentation - handy to have a print copy but it doesn't add much. For example, one of the key ideas that makes Android app development different is the app lifecycle. This is presented in about two pages that are as dry as the documentation. You can read it and understand it, but it doesn't point out the really important point that your app can be destroyed by the system and re-created at any time and its up to you to make sure it continues to work as if nothing had happened.
There are lots of other basic ideas that are included but simply not explained so that a beginner can appreciate why they important and what impact they have on the way you work.
I can only recommend this book if you are a fairly good Java programmer and you like the "24 hour" approach. You also need to be willing to fill in the missing elements in the code to create working programs. Overall, however, there are many more logical approaches to learning Android available.