Cross Platform C#
Q&A: Xamarin's Jonathan Pryor on Android 5 Lollipop
Xamarin's development lead offers insights into the Android 5 Lollipop update and how the speed with which Android releases spin out affects their own releases.
Jonathan Pryor, a Xamarin.Android Development Lead, was kind enough to take some time out of a busy weekend to answer a few questions regarding Xamarin.Android and the company's support for the new Android 5 Lollipop update. Here's an interview conducted in late 2014. At the end of this interview, I've also asked two fellow Android developers, Kevin Darty and Stephen Long, to chime in on their opinions of the new Lollipop features.
Wallace McClure: How has this update for Android been different for you than previous releases?
Jon Pryor: On the plus side, Google released a beta back in June, allowing us to get a preview release out in August, and allowing us to provide actual final bindings faster than normal. On the downside, Google changed the final API from the beta API in many large and significant ways, which we didn't learn about until it was actually released on October 17, one week before Lollipop hardware would be generally available.
Furthermore, we've hit a number of issues with the actual Lollipop system image causing garbage collection and debugging to break, both of which are "new" in that previous API updates didn't break the debugger and GC behavior.
How has your support been for the various updates to Android 5 beta SDKs? Have you been able to update your bits as Google has updated their SDK on a regular schedule?
Google released updates to the API-L android.jar, IIRC releasing an android-L_r04.zip some time in September, suggesting that there were at least three updates to API-L. However, all of the changes between r01 and r04 were in parameter names, not actual types or method names, and the API diff between API-L r04 and API-21 were significant.
So, in theory we could have updated our beta bindings more often, but there (mostly) wasn't anything to update until the end, which makes this API update process look rather similar to most of our previous API updates: Google releases an update, and we scramble to see what's changed.
Google has released the Nexus 6 & Nexus 9 devices. How do you go about making sure that your new bits work on the new software and hardware?
Google provided a set of Android emulator images that we can work from as well as "beta" images that can be installed on older devices. Unfortunately when dealing with hardware, we are limited to having to wait for hardware just like everyone else. Thankfully, our QA group has the Nexus 6 & Nexus 9 and is currently testing with it.
How does the Android 5 support move through the various Xamarin channels?
We have an alpha channel, a beta channel, and a stable channel. Our alpha channel gets updated fairly often (think: days). Our beta channel gets updates every few days or every week or so. Our stable channel gets updated as the product hits stability requirements and such based on feedback from the beta channel users and our QA team.
Do you have any conversations with Google regarding your product that is helpful to your customers?
We don't have any special conversation with Google regarding Android beyond the conversations that everyone else has with them via their existing channels.
What Android Developers Think
What do in-the-trenches Android developers think of Lollipop? Here are two opinions from Kevin Darty and Stephen Long.
What are the most important user features that you see with Android 5?
Kevin Darty: "Tap and Go" is a pretty cool feature that wasn't really even plugged much at all by Google. In the past when you logged into a new Android device a script would be run to auto-install every app you have ever installed which I always felt was half-baked, as I didn't always want every App installed.
"Tap and Go" works as it sounds, by using NFC to make a link from one device to the other. Lollipop now does what Motorola Connect does for the Moto phones. It allows for migrating photos, videos, SMS/MMS, apps, and app data from one device to the other. That is a really nice feature for those that want to easily jump from one device to another.
Android 5 also has a very configurable "do not disturb" feature which I think would come in quite handy as you can configure priorities for notification from an app to app perspective.
Along the line of these new prioritized notifications, another feature pertaining to notifications that I'm sure a lot of people will like is Lock Screen Notifications. I know a lot of hard-core Android fans have been using the third-party app DashClock, which is a widget for the Lock Screen that is configurable to essentially provide this feature for older versions of Android, but having it built in with Lollipop is quite nice, especially if you are coming from iOS which already has this feature.
Lollipop seems to incorporate a lot of features first developed by Motorola such as "Tap and Go" which came from Motorola Connect, "Ambient Display" which came from Motorola's most popular feature on the Moto X, "Active Display" and another cool security feature Motorola provided for their devices is now present, providing for "trusted" device connections. This allows you to associate your phone with another "trusted" device either through Bluetooth or NFC, so that you can unlock your device and actually set it to "not lock" when around this "trusted" device.
Stephen Long: Some of the interesting end-user-oriented features are app pinning, battery saver, and better setup/backup restore.
Let's now dig deeper and talk about new developer features that have you interested in this version of Android.
Kevin Darty: The new RecyclerView is a nice addition as it is something a lot of developers have already homegrown for themselves, so having a new, supported approach to implementation is very nice. This new "view" is position-aware so in the tradition of MVC, developers will need to separate their View code from the business logic, which they should anyway, but the new RecyclerView does further stress that separation.
As for Nuget, I believe the move by Xamarin to move more in that direction is a good one, as the original shift for .NET Developers moving from Microsoft .NET to Mono years ago was polarizing, due to all the "unknowns" for doing it. With the introduction of Xamarin and their tools for developing iOS and Android apps, there was still a steep learning curve for .NET developers moving out of the "familiar" world of Visual Studio over to MonoDevelop and then XamarinStudio. The more Xamarin intertwines their platform into what traditional .NET developers are used to, such as Nuget, the better, as it will only help developers in the end.
I believe 2015 will definitely be an exciting year, and hopefully we will see more and more collaboration between Xamarin, Microsoft, and the .NET community.
Stephen Long: I haven't directly looked at the new RecyclerView in detail yet, but this sounds like it is the most important new developer feature that I see with Android 5.
Some of the other features I'm interested in as a developer are the improved performance with ART runtime replacement and the new look/feel with Material design looks quite nice.
Recycle What You've Learned
Since the release of the Android 5 Lollipop update, the Xamarin support for Android 5 has provided some great advantages. The Android update has been deployed to developers, Nexus devices and is beginning to rollout to Android devices. The Xamarin support update has been available in at least the beta channel for several months, so there's no excuse to start using it today. I hope you've learned enough just from this look at the basics of the new RecyclerView, which is just one of many new APIs in the Lollipop update.
The Android Support Library
Data Binding with the ListView
Wallace (Wally) B. McClure has authored books on iPhone programming with Mono/Monotouch, Android programming with Mono for Android, application architecture, ADO.NET, SQL Server and AJAX. He's a Microsoft MVP, an ASPInsider and a partner at Scalable Development Inc. He maintains a blog, and can be followed on Twitter.