I always build an app to learn the language/platform. The only way you can really learn it is by building something. Combined with that I usually buy a book.
For Android, I hardly had to invest any time learning Java, since I came from Ruby and it's pretty similar. Most programming languages are all the same under the surface. Especially among OO-heavy ones.
Best android book: http://www.amazon.com/Android-Programming-Ranch-Guide-Guides...
Best objective-c book: http://www.amazon.com/iOS-Programming-Ranch-Edition-Guides/d...
Both books assume you know the languages but I jumped in with limited knowledge and learned the language as I went.