Ever wonder why Android devices can seem a mite sluggish when manipulating the user interface, where Apple’s iOS-based mobile interface responds like a coiled spring, just waiting for your fingertips to brush its glass surface before leaping into action?
There’s a reason, says software engineering student and ex-Google intern Andrew Munn on his Google+ blog: Android was built to lag, and there’s little Google can do about it.
Remember when people blamed Android’s laggy interface on optimization shortcomings? Everyone said the reason Android’s UI sometimes felt sluggish was its lack of hardware acceleration. That was supposed to change with “Honeycomb,” the tablet-angled third iteration of Android OS that launched with the Motorola Xoom back in February. The only problem: Honeycomb didn’t eliminate Android OS’s tendency to lag when manipulating the UI.
Why not? Because Google made some pretty big mistakes when first designing Android, argues Munn, mistakes that may be too significant and intrinsic to fix at this point.
The “root cause,” says Munn, is that “on iOS all UI rendering occurs in a dedicated UI thread with real-time priority.” In other words, when you touch an iPhone or iPad, all other processing cedes to your fingers’ whims. “On the other hand,” says Munn, “Android follows the traditional PC model of rendering occurring on the main thread with normal priority.”
Munn says it’s not just an academic difference, and explains how you “can see it for yourself.”
Grab your closest iPad or iPhone and open Safari. Start loading a complex web page like Facebook. Half way through loading, put your finger on the screen and move it around. All rendering instantly stops. The website will literally never load until you remove your finger. This is because the UI thread is intercepting all events and rendering the UI at real-time priority.
Do the same thing on an Android device, however, and…
…you’ll notice that the browser will attempt to both animate the page and render the HTML, and do an ‘ok’ job at both. On Android, this a case where an efficient dual core processor really helps, which is why the Galaxy S II is famous for its smoothness.
According to Munn, this means Android’s user interface “will never be completely smooth” so long as user interface rendering takes place in the main thread of an app and rendering is only given “normal” priority.
I’m not an Android or iOS software engineer, so all I can say in response to any of this is that, assuming Munn’s correctly articulated the way rendering takes places on Android and iOS devices, it makes sense (but then so does the idea that Lee Harvey Oswald had help, at least to some people).
In any case, Android OS clearly has lag issues–what’s Google doing about it? Munn says fixing the problem would require a rewrite involving every app in the Android Market, that there’d need to be a “legacy support mode” for older apps and that work on other Android features could be compromised by the focus on the rewrite “fix.” While that may sound overwhelming and unlikely, Munn thinks (okay, hopes) it could happen by the time Google’s ready to release Android 5.0.
[via Cult of Mac]