If you’re a platform-agnostic smartphone enthusiast who has had extensive playtime with the iPhone, Windows Phones and Android smartphones, you’ll probably have noticed how the former two mobile operating systems offer a much more “smoother” user-experience compared to the latter’s general “choppiness”. Well, it appears that Android will never be as smooth as iOS or Windows Phone 7 because of the way its very foundations were laid down back in 2005-2006. Details after the jump!
The news comes straight in the form of two posts over on Google’s struggling social network Google+: one by a Google engineer who talks about how graphics work on Android and the other by a 3rd year software engineering student in reply to the first post. Both are pretty lengthy and can get pretty technical, so we’ll try simplifying it as much as we can.
We’ll start off with Google engineer Dianne Hackborn’s post. She states that hardware acceleration – i.e. using the GPU, instead of CPU alone, to render the user-interface – has existed on Android since version 1.0 for things such as sliding the notification bar, pop-up dialogues etc. Full hardware acceleration only came with Android 3.0 Honeycomb and, unsurprisingly, Android 4.0 Ice Cream Sandwich actually has the same kind of hardware acceleration and this won’t necessarily sweeten things up.
Hackborn states that hardware acceleration “is not all full of win” since it takes away a lot of RAM when used for devices like Nexus S, Galaxy Nexus with OpenGL. Each process takes about 8MB of RAM and “isn’t worth it” considering the minimal effect it has on how “smooth” the UI looks after implementing it. So yes, hardware acceleration certainly helps, but it takes far too much processing power for it to be implemented to all parts of the UI.
She ends her post on how full, complete, A-to-Z hardware acceleration that results in 60 frames-per-second graphics is simply not possible, even with powerful chips like the Tegra 2.
Now, the question arises: why is it that even seemingly outdated phones like the iPhone 3GS offer a smoother UI than the latest Android smartphones? iOS uses hardware acceleration and that too on weaker hardware. How does Apple’s engineers manage to pull it off, then? Why can’t Google do the same?
That has been answered by Andrew Munn – software engineering student, ex-intern at Google and future intern with Windows Phone 7 team at Microsoft – who states that UI rendering processes in iOS occur with dedicated threads with real-time priority whereas on Android, UI rendering processes occur along with the main thread with normal priority. Whenever an iOS devices detects touch, it stops other processes and focuses all attention to rendering the UI. Android devices don’t do this, instead general processing and UI rendering occurs concurrently which results in choppy UI.
To see this in choppiness in action, check out the following video. Notice the choppiness around 1:50: