Author: Carlos Sessa
Audience: Intermediate Android developers
Reviewer: Mike James
There are lots of beginner's Android books so this one is a welcome move up the ladder with 50 moderately advanced Android hacks.
Of course what you mean by "moderately advanced" is relative to where you are - but these are not the not the sorts of things you are likely to want to get involved in if you are just graduating from your first Android app. You need to have a good grasp of Java programming and know your way around the basics of the Android system to get much from this book.
The first chapter is about layouts and it does nothing to explain the basics of how layouts work. The simplest of the hacks is naturally enough the first and it is fairly slight if you understand the way that linear layouts work. It just explains how to use weightSum and layout_weight. From here we have lazy loading, a custom viewgroup and a preference hack.
Chapter 2 is about more graphics including transitions, animations and some special effects. Chapter 3 takes us back to the UI with date validation, formatting, glowing text effects, toast positioning and more. These two chapters are a random collection of ideas in no particular order and this is one of the problems of the book it doesn't really have anything bigger to say about working with Android other some very specific examples. In addition the examples aren't that well explained - you have to read the code and the documentation to work out what is going on if you are in any doubt.
Chapter 4 is very short and just deals with two tool-oriented hacks - removing log statements before release and using the hierarchical viewer tool to remove unnecessary views. Chapter 5 is about patterns and explains the Model-View-Presenter pattern - a variant on MVC.
Chapter 6 is about working with lists and adaptors and is very practical. Chapter 7 is not going to interest everyone as it is about Aspect Oriented Programming and using the Cocos2D-X library. I would guess that these are minority interest topics. Similarly Chapter 8 is about using Objective C and Scala within Android. Again I'm not sure these are things many people will want to do, but if you have some iOS code you want to run or are tired of Java then perhaps.
Chapter 9 is just a collection of random topics and it isn't easy to characterise them. Chapter 10, however, is on advanced database - which means getting clever with SQLite. Chapter 11 is on some anti-fragmentation topics including using fragments and a few hints on how to work with older versions of Android. The final chapter is on building tools Maven, working with rooted devices and Jenkins.
You need to know that this is a fairly short book, 180 pages for 50 Hacks works out less than four pages per hack. This is reasonable, but don't expect in-depth explanations suitable for a beginner as most of the space is taken up by an annotated listings. Also notice that most of the topics are "core" Android - there is very little if anything about using sensors, the camera or other higher level services. The majority of the hacks are about the UI, layout or presentation in general.
This book isn't going to teach you anything new about how Android works or is organized. A phrase you will find occurring a lot is something like "you know Android provides x, well you can do better by implementing you own x." If this is what you want to do then you will find a lot in this book to please you - as long as the hacks are about what you want to do.
This is not a beginner's book and it is nice to have a more advanced Android programming title, but it makes you think that it should be possible to write an advanced book in a more structured way rather than just a collection of random topics.