A great read. I especially liked that, when I was near my laptop, I could type along and try things out, but that the book was equally enjoyable reading on an airplane, in a middle seat, where I was too cramped to get the laptop out. Engaging, readable and informative.
I see that you are collecting errata, here, so let me chip in:
Chapter 15, pp 229: “These functions include toString, equals, and hashCode, which improves the speed a value can be retrieved with a key when using a Map”
Chapter 18, pp 276: Extensions, Under the Hood.
This seems like an ideal candidate for a “For the More Curious” section.
Chapter 19, pp 286: “map does its work by returning a new copy of the collection…”.
In what sense is the thing that map returns, a “copy”. It is a brand new list with brand new things in it…
Chapter 21: pp 338: Serializable
Using Java serialization in an Android app is just a terrible, (slow), terrible idea. I can totally see using it as an example, but I think you have to say, afterwards that this is something you would never do in an actual app and that the right thing to do is make it a Bundle.
Chapter 22: pp 351: Discussion of suspend vs block
I believe this paragraph contributes to the FUD concerning Co-routines. Coroutines are a model of asynchronous programming developed to make concurrency more accessible to developers. They are not, of themselves, more efficient, in any way. In particular, it is simply not true that a coroutine “does not block the thread”. It absolutely does.