Why is Android Laggy?

I read Dianne Hackborn’s post yesterday which reflected on the oft-laggy Android UI. I left the post quite confused, and didn’t link to it because of that.

Andrew Munn’s post clears up a few of the problems I had with Hackborn’s original writeup. This is the epicentre of Android lag, though (emphasis his):

It’s not GC pauses. It’s not because Android runs bytecode and iOS runs native code. It’s because on iOS all UI rendering occurs in a dedicated UI thread with real-time priority. On the other hand, Android follows the traditional PC model of rendering occurring on the main thread with normal priority.

As has been noted since the first iPhone, iOS prioritises what needs to render now, always. Android likes to render everything. This becomes apparent when trying to move around large amounts of content on phones with less-than-amazing graphics and processing capabilities.

Munn also notes a number of other contributing factors, like garbage collection, rendering efficiency and a few others. Smart post.