Author: J. F. DiMarzio
Publisher: Wrox Press
Audience: Beginning Android developers
Reviewer: Lucy Black
Android Programming can be easier using Android Studio, but you have to find out how to use it first.
The big problem with Android Studio is that it is developing fast. Not just minor changes but big changes that invalidate a beginner's book in no time at all. This particular edition came out at a very bad time because Android Studio changed from RelativeLayout to ConstraintLayout as its basic layout component. This makes it difficult to follow the examples unless you are prepared to do some additional research. However, this is not a reason for writing the book off. Android Studio is fairly easy to learn to use and given guidance on the general principles the reader should be able to navigate their way around the difficulties - however don't expect the examples to just work.
What is more of a problem with this book is that it follows the standard pattern of introducing Android concepts that broadly follows the documentation. This is a common problem among introductory books on Android and the documentation isn't the best way to introduce ideas.
The book starts off with the usual getting started with Android and this is where the differences between the versions of Android Studio show the most. However, if you just follow the rough outlines and use some intelligence you will have the "Hello World" app running at the end of Chapter 1.
Chapter 2 is also a bit of a problem in that the IDE has changed but it explains how to use code completion and how to set breakpoints. Inexplicably it also covers how to publish your application, which is introducing such considerations a little soon.
At Chapter 3 the book starts abandon talking about Android Studio and falls into the pattern of most other Android book in explaining Activities, Fragments and Intents. Yes, you do need to know about Activities as soon as possible, but you certainly don't need to know about Fragments at this early stage. It is even arguable that you don't need to know about Intents. The coverage of Fragments is so slight that it is hardly worth confusing the poor beginner by even tying to make use of them.
Chapter 4 is about the Android User Interface and its biggest problem is that it covers RelativeLayout when Android Studio has left this behind and opted for ConstraintLayout as its default. It also doesn't make use of the Designer, which is one of the big attractions of Android Studio for the beginner. Using a drag-and-drop designer gets you started and teaches you the basics of the XML used in layout.
The next chapter continues the look at the UI with an explaination of how to use basic UI components - Buttons, TextViews, Pickers and so on. Again it covers the more advanced Fragment components, which would be better left for later.
From this point on the book is more or less Android Studio neutral. It is a description of the Android API rather than how to use Android Studio. Chapter 6 continues with some aspects of the UI in dealing with the ImageView component and how to create menus. Chapter 7 is about data persistence including using databases. Chapter 8 is about content providers, Chapter 9 is about messaging, Chapter 10 is about location and Chapter 11 is about networking. All of these are traditional Android topics and they are discussed without any reference to Android Studio. The problem is that any one of these topics could merit a book on its own and the chapters introduce them far too quickly.
The final chapter is about developing your own Android Service. To do this you have to come to terms with threads but threads aren't the best way to implement asynchronous tasks on Android. This is all too much too soon and with far too little explanation. This is a beginners book and they need to know that the single threaded UI is a problem but they don't need to know how to solve the problem until book two.
You may think that the biggest problem with this book is the fact that it hasn't keep up with Android Studio however there are problems with it that aren't going to be solved simply by moving to the next edition. The issue of Android Studio is a minor one however because the book doesen't really make use of its facilities to teach you Android programming. It doesn't make use of the Designer, the Properties window, conditional layouts, code generation and so on.
A much bigger problem however is that there just isnt' enough explanation. The topics are introduced mostly by way of "here is a program that does X" and then a few notes on things about the program that might not be obvious. Often there is no attempt at an explanation of the architecture of X or the ideas that guide the use of X.
If you like learning to program by just reading code this may be a good thing, but be prepared to work hard at extracting the principles from the examples.
This is not a good beginner's book.
For completely up-to-date coverage of Android Studio 2.3 see:
Android Programming: Starting With An App, Second Edition ISBN: 978-1871962512
To keep up with our coverage of books for programmers, follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.