Understanding the No. 1 complaint about Android - Lag

Go to any android vs iOS flame war. The first thing you will probably see that the pro iOS people say about android is that it is laggy/choppy/slow etc. The pro Android people will than refute that it is no longer true, or that lag is no longer an issue after 2.3. Well the following is what I think is wrong with android's lag, and the rehaul that is needed to make it not lag.

My home workstation is a Xeon + 16gb of RAM. Does windows lag on it? Yes and No. It doesn't lag on boot up, it doesn't lag when I have 3 browsers and an FTP client running in the background, and it doesn't lag when I am coding in visual studio. It does lag when I alt-tab a resource intensive game into the background, it does lag when I try to do things while visual studio is compiling a large project in the background.

Well of course you say! Of course Windows lags when there are large, resource intensive tasks running in the background! It is easily understandable! My computer simply doesn't have the resources to provide a smooth user experience when a lot of its resources are used in the background! When it comes to computers, this is a fundamental thing that every single user understands.

Lets look at iOS and Windows Phone. iOS and Windows Phone never lags (although I hear reports of older iPhones lagging on newer versions of iOS). No matter what you do, you cannot get the system itself to lag (application lag is a completely different story). Why doesn't iOS or Windows Phone lag? The answer is pretty simply. iOS and Windows Phone both uses a multitasking system that revolves around the use of certain background agents. Each app also has resource usage restrictions that it can never step over (which is why some games won't run on low end windows phones when they do run on similar specced androids). This means that the amount of resources available to the OS to provide a smooth user experience is fixed, Apple and Microsoft understands that they have a certain amount of resources to work with, and they can deliver a lag free experience.

So in essence, multitasking = varied system resources = possibility for lag. But why is the problem particularly bad for Android, but not other OSs with multittasking?

What does Windows, OS X, WebOS, and Symbian have in common? These operating systems all have "true" unlimited multitasking. Yet nobody ever complains about lag. Why is it so?

Well think about it like this, ever since the Windows 95 (and possibly before that), Windows has a task switcher that showed you the currently running programs, and with every program, there was a little X in the top right corner that allows you to close it fully. Symbian has implemented the same thing slightly differently, with the user holding down the home button to see all currently running programs, and there is a little X on each program's icon that allows you to close said program. Web OS with its deck of cards did it in a brilliant way, the cards show you the currently running programs, and you swipe up to close a program.

Windows 95:




Web OS:


And than there is Android. Android's multitasking is horribly implemented in my opinion. Lets look at Android <= 2.3 first shall we?

So you hold down the home button, and you get your recently used apps list. These apps are simply the most recently used ones. There is no way to understand which ones are currently running, and which ones aren't. There also isn't an obvious way to close apps running in the background either. Many users are confused by this happazard system, after all, apps stay running until they mysteriously stop, and there is no way to see which ones are actually running, and which ones aren't.

Its no better in >= 4.0. You get a recently used list, but it acts the same as the recently used list in 2.3 it simply shows what apps are used recently. You can swipe them away, but that only removes the app from the list, it doesn't change its actual running state.

And so, this is why people complain that android lags. They might start a few apps, press the home button, and now when they swipe around the OS, it just lags. Android's multitasking does a horrible job of presenting the currently running apps to users, and as such, they blame the lag caused by apps sucking up performance in the background on Android itself.

How should Android fix it? why don't they change the recently used list into the currently running list? Nobody blames windows for the lag, because they can easily see that it is a resource hungry program they are running in the back that is causing the lag. Yet everyone blames android, because the multitasking is too damned incomprehensible!