A couple of months ago I took a course in Udacity called “Developing Android Apps”. It is developed by Google and it’s the first part of the Android Nanodegree at Udacity. The final project was building a cloud-connected app to allow users to discover the most popular movies playing, a really good experience.
In the beginning…
After developing ApPiano, I felt the urge to go back into mobile development. That’s when I tried Ionic Framework. Now it has become better and more supported than before, since Android’s WebView is based on Chromium. It is really nice, and through ngCordova you can use the native APIs in a really simple way.
Anyway, nothing beats Native! The performance is way better and it has out of the box support for all native APIs. That’s why I started the course at Udacity.
If you want to know more about Hybrid and Native apps, read my article at SitePoint.
What Movie to Watch Next?
Hot Fuzz is nice
So after building the Sunshine app, I had to build this application that showed the most popular movies playing now. The movies were to be fetched by a cloud service called The Movie Database (TMDb) and showed to the user. Quite a simple task if you think about it. Anyway, it included most of the core Android skills:
- Using XML for layouts
- Fetching data from a cloud service out of the UI thread
- CRUD operations in the embedded SQLite
- Unit testing
- Syncing through a thread-safe Service
- Showing notifications
- Writing Adapters (mostly CursorAdapters)
I tried to develop it by using the Android framework as much as I could, and then thinking of using third-party libraries. But sometimes it is better to use third-party libraries: Nobody wants to reinvent the wheel! The Android framework is capable of doing everything you need to do, but sometimes it can be tiring and frustrating. Third-parties simplify the work and increase code readability. That’s why I used:
- Picasso for image loading,
- Retrofit for HTTP client; it turns an HTTP API into a Java interface
- Gson for fetching Java Objects from the JSON response from the server
- CWAC MergeAdapter for populating a ListView from different
Some other third-party libraries I’d like to use are RxAndroid for Reactive programming and any ORM like GreenDAO or Realm (still not stable though). Also, it seems a good idea using Kotlin or Xtend, just like Swift for Android. Probably my next Android application will be built upon AndroidBoilerplate.
The source code can be found on GitHub. I hoe it will serve to me (and probably to anyone else) as a reference in the future when developing Android apps. Also, there are also other resources about Android development I’d like to share. You can read these 5 Best Resources for Android Developers on SitePoint.
If you have anything to add, any suggestion or question, comment below and let me know