Why does my Android transfer so much data? Notes on debugging bandwidth-troubles

I have a data plan for my Android device which makes me interested in not having it move more than 500 Megabytes of data over the mobile network (3G, HSDPA) per month.

When I started out with my Motorola Milestone (a.k.a. Droid in the US) I could see that I had a base-use around 5 Megabytes daily. That would be what my installed apps used when I am not having the screen unlocked. Primarily email synchronization.
When my screen is unlocked (with me browsing the web or phoning someone) it will usually be using WiFi.

This blog entry is about what I did when I started to see my base-use moving to the 15 Megabyte range daily. What I did to force the number down again.

My base-use is the number that makes up the minimum mobile data transport for my device. This is when I do not really use my device very much.
If I start using Google Maps, Google Goggles, send emails, watch YouTube videos and the like, that is all something that comes on top of the base-use.

Here are some numbers for you.
My data plan says I need to use a maximum of 500 Megabytes per month.

Here is what my base-use looked like to begin with: 30 days a month of 5 Megabytes equals 150 Megabytes. That would leave me with 350 Megabytes to fool around with. A comfortable number.

This is what my base-use changed to: 30 days a month of 15 Megabytes equals 450 megabytes. Now that is not comfortable at all. It leaves me with 50 Megabytes, which is nothing really. I need to get away from that base-use number.

I expected that only one or perhaps two of my currently installed apps was the culprit. I need to find it and squash it.

I have done a lot of searching for an Android app that would tell me which apps are transferring how much data. I have not found such an app
Now, there is an idea for a great app. That idea is free for you to work on.

I have found a couple of apps that helped me narrow down my list of suspects though. Those apps are

NetCounter helps checking how much data is getting transferred. I have configured it to show me how much was transferred today and how much was transferred yesterday. I also have it configured to alert me when those values go beyond 15 Megabytes. NetMeter also shows me how much data gets transferred, but it is a bit more graphic than NetCounter, and it allows me to see the data for periods that are shorter than a day: 15 minutes, 30 minutes, 1 hour, 3 hours and so on. And then there is Advanced Task Killer Free. What that app does is that it shows what apps are currently loaded in memory on the device and then it allows me to quickly terminate the ones that I want killed. Lots of apps are loaded in memory, and they get loaded even though you did not load them yourself by clicking them in the application menu - very interesting.
To start out with I just loaded NetCounter (illustration on the right) and NetMeter and had them running all the time. Every night before going to bed I had a look at the numbers. When I got up in the morning I would check the numbers again, and I could easily see that most of that 15 Megabyte use happened while I was sleeping.
Then I loaded up Advanced Task Killer, and for a couple of days I now did something more than just noting the numbers before going to bed. Now every night I would first start Advanced Task Killer and then kill all apps except the ones I really want to be running and then take note of the numbers. The next day I had a look at the numbers when getting up and whoa! almost no data had been transferred during the night.
We are talking about going from perhaps 14 Megabytes down to 500 Kilobytes. I was definitely on my way to solving the problem. Now I wanted to find the app(s) that need to be removed. The data hog(s).

What came next was that I made a list of the apps that were in the clear. Apps I was certain were not the data hogs. The first names on the list were the ones I just mentioned - the ones I did not kill using Advanced Task Killer. I wrote down the names of those apps on my "Non data hog list".
Then every evening I would go through the same routine:

  • Plug in the device for charging.
  • Start NetMeter. Push Menu, push reset, Go to the Android Home Screen.
  • Start Advanced Task Killer (see illustration to the right). Kill all apps that are not on the Non data hog list except one app.
  • Write down the name of the app that I let live. Let's call that app the applicant.

And then every morning I would check NetMeter: Has more than 1.5 Megabyte of data been transferred during the night?

  • If yes: This is a potential data hog. Put it on the list of apps to keep an eye on.
  • If no: Put the app on the Non data hog list.

In the illustration to the right you see part of the NetMeter app from a "bad" night, where my device has transferred 19.3+8.7 = 28 Megabytes.

You get the idea I hope. This method is straight forward: Eliminate one app at a time and in the end you will have a (very) short list of apps that are the likely culprits. Those apps on the list of apps to keep an eye on should then get extra attention.

In my example I had only one app on the list. This was Calorie Counter, an application for Android that I have been using a lot the last couple of months.

What I now needed to do was to establish that I could be sure that the app was actually the one responsible for all that extra data consumption.
What I did was a variant of the method I had already used, but focusing solely on the potential culprit.

What I did was to alternate between killing (using Advanced Task Killer) and not killing the app (but making sure that it was loaded by looking in Advanced Task Killer) every evening and then also loading and resetting NetMeter.
In the morning I would check what the data use had been.

After having done this 6 days in row, the verdict was clear: The app I had found was definitely the one that had brought my daily base-use from 5 to 15 Megabytes of data. On the mornings where I had killed the app in the evening data use had been less that 1 Megabyte, while on the other mornings data use was in the 10-20 Megabyte range.

What happens next of course is that I will contact the developers to ask them to do something about the problem. And in the meantime, waiting for a better release, I will kill the app every evening.
Make no mistake: Calorie counter is a great app. It just has a problem that needs fixing.

I wish there was an app for measuring exactly which apps are using how much bandwidth. But until someone invents one, I am afraid that my method or one like it is all that you have got when facing a problem like the one I had.