Saving Battery Life
I've spent the last several hours attempting to find ways to improve my Android's battery life using programs to manage the software that starts when my device does. I have an Xperia x10 with Android 2.2 installed. So far, Gingerbread (2.3) is not available in Canada, which is why I haven't upgraded, yet. The problem is, that this can't really be done.
Let me give you some history. I started by installing LBE Privacy Guard, which is the only real Firewall that will work on my device. The challenge is that the x10's do not use ipTables. So, you can't use programs like DroidWall or HiSurfing. LBE however, is a very suitable replacement. I recommend you check out my review of it from the link above.
Once I was done configuring LBE, I decided to check out any other applications that were similar. I came across a program called Permissions Denied. If you use a different device than the Xperia, then perhaps it will work for you, but for me it did nothing. I mean it did literally nothing. It would not save settings, prevent applications from starting, prevent access to any of the features I restricted, for any of the software that I configured. So, it was completely useless to me. That obviously will not be the case on every Android device and I'm truly disappointed that I cannot use it, because it has some fantastic features. If I could, I would actually use it not as a replacement for, but in conjunction with LBE. The reason is, that Permissions Denied doesn't just focus on Network connectivity, the way that LBE does. Instead, it allows you to restrict access to any feature of the device for which the Android OS allows access. Some examples include:
- preventing applications from starting when the device boots up
- preventing the device from sleeping
- bypassing the lock screen
- restarting other applications
- controlling the camera, flashlight, ringer or vibrator
- gaining access to the clock, alarm, calendar, phone or contacts
Those are just a few. So, the potential is fantastic. Unfortunately, it does not work whatsoever with my device. The feature I was most disappointed about was preventing applications from starting on boot up. You see, with portable devices, such as laptops, but even more importantly with tablets and smartphones, battery power is eaten up by every application running. The more applications that are running, the faster your device will lose power. So, what you need to do, is to limit the number of applications that are running at any one moment.
If you've ever owned an Android device you'll know that programs you haven't even tried, will often start on system boot, whether it's a game, a system utility or some communications program you've installed, but never got around to using. It doesn't matter. They start because they've been designed to do so. Beyond the battery power issues, there are also security risks. If a game you've never played is suddenly running on your device, what else is it doing? Is it reporting your location, your phone number, your address book contents to it's developer or advertisers? That's why you need a program like LBE to prevent such access. However, you also don't want it eating up your battery power, so prevent it from starting, if you can.
Sadly, I've learned that you can't. I tried several Startup Managers, including Permissions Denied and none of them can really help you with this scenario. The problem is that even if you prevent such evasive software from running when the system starts, it will likely also have other system triggers that will cause it to start. First of all, I only found a few of these managers that actually worked. Most didn't, but even the ones that did, were rendered useless by these additional system events. 5 to 10 minutes later, most or all of the software I was able to eliminate from starting was back. Why? It's hard to tell, but the designers clearly coded them to look for some form of system event which would trigger the apps to restart. That means that all the hard work you just spent telling your device what programs not to run, has just gone down the drain. That doesn't sound encouraging, does it? But wait! There's hope!
One Train Of Thought: Task Managers
Enter Task Managers! Queue dramatic trumpet sound. With a proper Task Manager like Android Task Manager, you can at least keep ahead of the curve. Most of these utilities have an "Ignore List". Add all of your important programs to that list. I include LBE Privacy Guard, AdFree, Quick Exit (Froyo+) and my AVG Anti-Virus.
The next thing you will need to configure is the list of Auto-Kill programs. That would be all those apps that startup without your direct interaction. Yes, I'm looking at you "Anonymous Usage Stats"! Once you've configured that list of apps, anytime your device's screen turns off or it locks, or you open the Task Manager, those apps should be automatically terminated. Some Task Managers can also be configured to periodically check for and terminate these programs every few minutes.
The final list of applications you would worry about are the programs that do not fall into either the Ignore or Auto-Kill categories. This is all other software on your device. You can use your Task Manager to kill them on an as-needed basis. Doing so frequently, will help prolong the life of your battery.
What this all boils down to is that Startup Managers are useless, but Task Managers are a suitable alternative. I hope this helps save you some of the time I wasted researching and determining this for myself.
The Other Train Of Thought: Watch CPU Cycles (A.K.A. Do Nothing!)
Okay, so Task Managers were an excellent idea in the early days of the Android OS. However, later versions of Anrdoid, such as Froyo and beyond, apparently have better memory management. Arguments have been made that Task Managers are no longer needed. In fact, many developers won't even provide support to people using these apps. The reason being that your Andriod device loads apps into memory on purpose. It attempts to determine what apps recently required or frequently require access, and it leaves them in memory, for faster loading. By using a Task Manager to kill those apps, you're actually doing more harm than good, because the Android OS will just reload them as soon as you've closed them, thereby wasting power and time.
Instead, trust your Android. That's the new line of thought. However, you'd be foolish to leave everything up to the device, because not every programmer who writes Android apps necessarily does so without mistakes. What you need to do therefore, is not watch what programs are in memory, but what programs are in memory and actually doing something. If a program is in memory, but isn't using any CPU cycles, then it's not doing any harm. Programs however, that are taking up memory and actually using the processor, even though they're in the background, are the apps you need to monitor. If there's something running that shouldn't be, or worse yet, something that's running very inefficiently and eating up way more power than it needs to, then you should do something about it. In general, most programs do not run into this issue.
The next question is how would you go about monitoring this? You can use the options built into the Android to monitor battery usage. That gives you some indication of the processes that are the biggest resource hogs, but other programs like Watchdog are specifically designed to watch CPU and memory usage, as well as to warn you when any program surpasses a reasonable threshold of use. This program is not designed to kill apps at random like Task Managers are, but simply report anomalous activity. While you can certainly use it to start and end programs, it's mainly a reporting mechanism. Once you know what programs are problematic, either reconfigure them or remove them. Sorry, that's probably not the answer you were looking for, but that really is the best option. Remove that application and search for a reasonable alternative that runs more efficiently.
What this boils down to is that you need to determine for yourself which way to manage the apps on your device. Startup Managers have proven useless. Task Managers certainly work well on older versions of Android. Whether they work properly on newer versions is still open to debate. You can of course, use the battery usage reports within your Android or programs like Watchdog, to find the few select programs that you actually have to worry about. The rest you can probably ignore.