Tuesday, July 10, 2012

How I made my Android phone snappy (without paying a dime)


Ultra condensed answer for the impatient: I uninstalled all applications that created unnecessary services

I am the owner of an HTC Desire, a two year-old Android phone. It's no speed demon, but it's not slow either, even by today's standards. It has a 1GHz CPU and 576Mb of RAM, which is on par with than some fairly recent mid-range devices out there.

So you can imagine my disappointment when I came across some serious lagging on my phone's interface: Applications took seconds to load, transitions from one page to another were sluggish, going to the home screen took forever etc etc. I am sure if you are still reading this and you have an Android phone, you probably know what I am talking about.

Being obsessed as I am with computers and performance, I started searching for the cause of the problem by tweaking different options and settings. During this, something weird caught my eye in the process list.

To view the running processes on my phone, I use SystemPanel Lite.
It shows you which applications are actively running, which are sleeping and which ones are system processes that cannot be touched. But perhaps most importantly, it shows you all the applications that are running as “services”.

You see, normal Android applications only run when you are actively working with them, when you have their interface on the foreground. If you switch to another application, the former application is paused and stops using the CPU completely. This was intentionally made so by Google in order to conserve the usage of your phone's precious battery juice. If you do not use an application for a long time, Android just closes it automatically to make room for other programs.

Services on the other hand can be running all the time. They were made for things that have to run in the background, like checking if you have new email, counting your data plan usage or if there's an open Wifi nearby. Obviously, services can be using the CPU at will, and since they are always active, it's unlikely that Android will put them to sleep at all.

Android services are good and welcome when used for the right reasons. But apparently they can also be abused: The problem I was seeing in the process list is that a lot of things were running as services, even though they had no valid reason to do so. Examples:

SimpleCalendar Widget: Why does the calendar need to run as a service? In case I miss an event for a couple of minutes before the widget redraws itself? And why does the Google Calendar widget not use a service despite doing exactly the same job?

WifiManager and Fing– Network Tools: Why does a network scanning application need a service even when it's not running?

And don't get me started on the Facebook app. It's painfully slow, requires more permissions than a North Korean prison guard and consumes gobs of memory. Oh, and it installs a service on your phone. You can actually see it in the screenshot on the right eating a little CPU while obviously being in the background.

I uninstalled all of them. I switched to Google's native calendar widget and for accessing Facebook I installed Seesmic. It's not perfect, but it's light and gets the job done. I also sometimes just use the browser to visit Facebook: The native app is so slow, even the mobile browser can keep up with it. For the other two apps I found WiFinder and NetworkDiscovery which do more or less the same things only with no useless services.

There were more applications with services on my phone, but I can't recall them anymore. In the end it doesn't matter, because not everyone has the same applications on their phones. What matters is that since uninstalling those service programs, my phone is not lagging anymore: It's as snappy as you would expect from a device that's brand new instead of two years old.

So keep this in mind when you are trying out a new app. If it requires an unneeded service to run, consider that a disadvantage. And don't take my word for it, try it out for yourself. I would also encourage you to down-vote such applications on Google Play to get the message across. Android developers, please don't install services unless they are absolutely needed. I am sure Google is saying the same on their application design guidelines. And if you need to implement a service, at least give the user the option to disable it if he so wishes.

Oh, and if you know of a good digital clock widget (with no services) let me know! I know such a thing is possible, because the Google analog clock does it just fine.

No comments:

Post a Comment