Android 3.0 Honeycomb SDK: The Good, the Bad and the Missing
Several weeks ago, developers were treated to an early preview of the next Android platform: Honeycomb (Android 3.0). Almost a month later, the final Honeycomb SDK was released, followed by the first commercial Android 3.0 device: the Motorola Xoom tablet. We've had some time to look at the SDK, new tools, and the new device. Here are our first impressions of the platform updates and changes. We'll cover user and developer items alike, but as always from the developer's point of view.
Android 3.0 Features and APIs That Excited Us
Android 3.0 provides a variety of new features and APIs. We're particularly excited about many of these, as their addition further expands the types of applications that are feasible on the platform.
The Fragment API makes it far easier for developers to create dynamic user interfaces and use screen real estate more effectively. Although initially considered primarily a "tablet API," the Fragment API can be used with all user interfaces to simplify design and share more code and layouts between different orientations and screen sizes, making it an essential API to use when targeting various device types.
A common problem developers have to deal with is downloading data for display within an Activity and then managing this data acquisition process when the configuration changes. Honeycomb introduced the concept of Loaders to solve this problem. By handling the retrieval of data asynchronously and automatically reconnecting to the data to avoid querying it again, we can expect the special new Loader API to improve the performance of the average data intensive screen.
Android Action Bar
Google introduced the notion of Action Bars last year at Google IO 2010. Several flagship Android applications incorporated the Action Bar concept, providing real world examples of this new user interface paradigm. Now, however, the Action Bar concept is built into the platform and have several new features, including drop-down menus , instant access to option menu items, and tab management. Look for more consistent and easier navigation in applications that use the Action Bar well.
RenderScript is a system that promises to provide a means of writing graphics and computational code in the C programming language and having it execute either on the native CPU or GPU, allowing for increased compatibility across multiple CPU and GPU types. This system reminds us of OpenCL or CUDA, in that performance critical computations may run on the GPU hardware and receive acceleration beyond what can be accomplished by the CPU. Although usually used in the context of graphics programming and games, the computational abilities could allow for other interesting uses.
Android 3.0 Tool Updates
Several tools were updated around the release of Android 3.0. The Graphical Layout designer has, once again, improved by leaps and bounds. It now shows a much more accurate preview of what a layout will look like on multiple Android devices, screens and SDK versions. It's also easier to drag widgets over and place them accurately without resorting to XML editing. Still, it's not perfect and we find ourselves in XML frequently to fine-tune user interface controls.
The emulator has received an improvement in the form of the snapshots feature. Snapshots allow the state of the emulator to be stored upon exit and later reloaded, cutting the startup time down to just a few seconds from what was often a several minute boot cycle.
Static Libraries for Android Backward Compatibility
Perhaps right now you're thinking: This is all great, but I need some of these features now, with existing devices that aren't running Honeycomb. Well, you're in luck! The Android team has just released a static library that contains some of the most sought-after Honeycomb features, making these features available for applications targeting Android 1.6 through Android 2.3.3. Right now, the primary two features this library encompasses include the Fragment API and the Loader API. Personally, we wish the Action Bar had been included from the start, too.
However, the statement the Android team is implicitly making with this release is great. There's an implicit dedication to existing versions of Android -- even old ones. They -- and their users -- are not being left in the dust.