I was recently part of a great team working on the Google I/O 2018 Android app. This is a conference companion app, allowing attendees and remote folks to find sessions, build a personalized schedule and reserve seats at the venue (if you’re lucky enough to be there!). We built a number of interesting animated features in the app that I believe greatly enhanced the experience. The code for this app has just been open sourced and I wanted to highlight a few of these instances and some interesting implementation details.
This year we had the opportunity to start from scratch. We could choose tools and think about the overall design of the app’s architecture. What is the best architecture? The one that makes the developers on your team the most productive. They should be able to work without reinventing the wheel, focusing on user features. Also, developers should be able to get prompt feedback on their work. Most team members developing the app are 20%ers — Googlers dedicating 20% of their time to the project — and they come from different teams, backgrounds and timezones, something to take into account when making these decisions.
In this short post, I want to write you about some stupid mistake I made when I wanted to execute two blocking tasks in parallel using RxJava. I spent about half an hour debugging my code trying to figure out why it’s executed synchronously despite the fact that I use subscribeOn method. Now if I think about it it was pretty obvious but I think most bugs seems obvious after you solve them 😉.
Navigation is a common problem that every Android app has to solve. There are many challenges around it that become more noticeable as the app grows in complexity: From Fragment transactions, deep linking to different parts of the app, passing arguments in a safe and secure way, handling up/back navigation (especially with deep links), dealing with the back stack and finally to testing the navigation within the app. JetPack’s navigation component was built with the purpose of bringing solutions to these issues. In this article we’ll take a look at its take on solving them.