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.