Ads in free smartphone apps are draining your battery

A study of free apps on Android smartphones shows that a significant portion of the energy consumed by such apps is dedicated to sourcing and displaying targeted advertisements. That conclusion itself isn't so surprising, but the extent to which certain free apps waste their resources on serving advertisements or logging user data - in one case, as much as 75 percent of the app's total energy consumption - is certainly eye-opening.

Abhinav Pathak, a computer scientist at Purdue University, Indiana, and the author of the study's report (PDF file), said that app developers need to take energy optimization more seriously, reports the BBC. Pathak and his fellow researchers built a special tool called eprof to monitor the energy use of Android and Windows Mobile* apps. They tested popular apps like Angry Birds, Facebook, Free Chess and NYTimes as case studies and found that only 10 to 30 percent of the energy spent went toward powering the app's core functionality.

In Angry Birds, only 20 percent of the total energy cost was used to render and run the game. Forty-five percent of the energy was spent tracking the user's location with the GPS and uploading that information, then downloading location-specific ads over a 3G connection. The app kept the 3G connection open for around 10 seconds, even if the data transmission completed in less than that amount of time. This "tail energy" cost another 28 percent of the app's energy usage.

Pathak will present his team's research at the EuroSys conference in Bern, Switzerland next month.


* Note: this isn't an error on our part. Curiously, the report - hosted on the Microsoft Research website - clearly states that Windows Mobile apps were tested, rather than apps running on the more up-to-date Windows Phone OS. While this is possibly an error by the report's authors (it wouldn't be the first time that 'Windows Mobile' and 'Windows Phone' have been used interchangeably...), we obviously have to report the findings of the study as presented.

Report a problem with article
Previous Story

Apple confirms three million new iPads already sold

Next Story

The Pirate Bay wants to place some of its servers in the air

21 Comments

Commenting is disabled on this article.

Regarding GPS, Angry Birds does not activate the GPS on my Android phone (I just checked). I wonder if the app selectively activates the GPS depending on your cell/wifi positioning accuracy, as I live in an area with lots of cell stations that even cell positioning is accurate to a few hundred meters. The Facebook app does activate the GPS though, but the Facebook app currently doesn't show any ads so I presume the GPS is used for the Facebook places check-in.

3G data on the other hand will consume a lot of battery, whether for ads or not, especially when signal is weak. As for "tail energy" - I'm don't think it can be attributed to the apps. 3G networks use a timeout system - the phone is supposed to maintain the high-power active data transfer state (CELL_DCH) until a certain period of inactivity, after which the phone can transit to a low-power state (Idle).

The thing is, the timer is specified by the operator. For my operator, it is 10s, while for other operators it may be more or less. The tradeoff, however of a shorter timeout is lower responsiveness, as it can take around 2s to transit from IDLE to CELL_DCH. So, say, an app loads a new ad every 30s. If it takes 2s to establish the connection, and perhaps 2s to retrieve a new ad, and then have a 10s timeout, then the phone would actually be in the high power state for 14s out of every 30s, which is nearly 50%! Obviously this would be a lot of power draw.

By right the phone should not be able to dictate when it should move to a low power state, but most modern smartphones do include something called "Fast Dormancy" which takes advantage of a loophole in the 3G spec to let the phone go to the Idle state before the timeout to save power. Unfortunately this is an OS-level function and if I'm not mistaken Android does so only after some period of data inactivity (to counter the problem of ridiculously long timeouts on certain operators draining battery), so apps can't specify when to put the data connection to a low power state.

With all these in mind it is not surprising that ads do drain a lot of battery, especially for those that change ads often. It would be more power efficient for apps to load a big bunch of ads at one shot and then change the ads from an "ads cache", but I don't think any company is doing that as yet.

And this is also probably the reason why push is preferred over frequent polls on mobile - better speed while saving battery.

Actually there are intermediate power states between CELL_DCH and Idle, but my local operator does not support them, and many others as well, I presume. You can read more about the things they have added to the 3G spec to better handle smartphone traffic patterns here: http://mobilesociety.typepad.c...ll-become-best-friends.html

By the way, I use currentWidget on my Android - unfortunately most phones only update current readings every minute, or does not even make it available, but I'm able to get per second readings on mine. And I do notice that when signal is weak, the current draw can double. To get the 3G timeouts I used Nokia Energy Profiler on my old Symbian-running Nokia phone, it reports the current 3G state the phone is in, among other power-related stats.

Edited by Kai Y, Mar 20 2012, 12:45pm :

Good reply but AFAIK fast dormancy has to be supported by the carrier for it to work on devices. Fast dormancy drops back to low power "3G" mode rather than HSDPA (or higher). If the carrier doesn't support it is not enabled on the modem.

Very good info otherwise though.

SHoTTa35 said,
Good reply but AFAIK fast dormancy has to be supported by the carrier for it to work on devices. Fast dormancy drops back to low power "3G" mode rather than HSDPA (or higher). If the carrier doesn't support it is not enabled on the modem.

Very good info otherwise though.

Oh you must be talking about the network-controlled fast dormancy, I believe. I got my info from here: http://mobilesociety.typepad.c...ast-dormancy-evolution.html

And the impression I got is that initially carriers set long timeouts. Phone makers wanted to improve battery life - so they made their phones release the connection after a short while (shorter than the timeouts). Then nowadays, networks have had shorter timeouts and started to implement the intermediate power states, which would be more efficient overall (in terms of signalling traffic, battery and user experience i.e. responsiveness), but the release of the connection makes it impossible for the network to ask the phone to go into one of the intermediate power states. As such, the 3GPP spec added a "network controlled fast dormancy" thing which allows the network to tell phones that implement it (generally newer ones all do) to change the power state according to additional timeouts the network specifies, giving control back to the network.

Carriers generally do not like fast dormancy (the classic one, not the network-controlled one) since establishing a connection from Idle to full high-speed communication (the H you see), requires a lot of signalling traffic. This signalling traffic takes up resources on the airwaves but carriers can't charge for it (because you did not actually transfer any data!)

You can read more about the signalling traffic in this white paper from Nokia Siemens Networks: http://www.nokiasiemensnetwork...ePaper_27012011_low-res.pdf

I assume they're using Windows Mobile rather than Windows Phone because it's actually possible to measure power usage through software in WM (and Android), and not in WP & iOS.

Can't believe all of you are blaming the devs for not optimizing battery drain. You think they code the Advertising component all by themselves?
They are simply using the tools provided by Google! So guess who hasn't optimized in-app advertising for Android?

techbeck said,
What are these ads and why do they drain your battery?

Read the article? It's no secret that using the GPS sensor excessively drains power quickly.

Michael Churma III said,
Root, install AdFree, configure it, reboot, and call it a day.

Too cheap to buy apps, and even too cheap to display ads in free ones? Wow. I mean, who cares about the dev who spent hours creating those apps? Naaaaah, he doesn't need the money anyway.

KooKiz said,

Too cheap to buy apps, and even too cheap to display ads in free ones? Wow. I mean, who cares about the dev who spent hours creating those apps? Naaaaah, he doesn't need the money anyway.

I am much more willing to pay for the PRO version of an app if it provides a great benefit over the standard version. I have bought many apps because of the PRO features I want. But I will either not use apps that have a ton of ads, or I will get rid of them. Most of the time they pop up in annoying places, takes up to much screen, sucks the battery, and increases your data usage. Make me want to buy the non free version other than getting rid of the ads.

KooKiz said,

Too cheap to buy apps, and even too cheap to display ads in free ones? Wow. I mean, who cares about the dev who spent hours creating those apps? Naaaaah, he doesn't need the money anyway.

I don't use any kind of "AdFree", but I buy the paid version of every app I use, if such version is available.

For something I'll be using often they are all dirt cheap, and getting them for free and then being bothered by ads is not worth it, IMO.

Michael Churma III said,
Root, install AdFree, configure it, reboot, and call it a day.

I got it installed, but how does it saves the battery? It just blocks the display of ads in teh applications and not the request for them or the data collection.

Michael Churma III said,
Root, install AdFree, configure it, reboot, and call it a day.

I'd rather turn off my GPS to get generic ads instead of killing tiny devs bringing apps to your phone.

Pupik said,

I got it installed, but how does it saves the battery? It just blocks the display of ads in teh applications and not the request for them or the data collection.

It actually dont block the display but Adblock will block the app from downloading ads itself.. so energy is saved by not letting the app connect to 3G... but all those GPS tracking will still take up the battery power. but there is a way to efficiently manage these by using firewall tool like avast... it blocks the whole internet and can be configured to allow through particular connection.. not advisable for app that needs internet connection.

Wow, this is day-light robbery!! No wonder such expensive battery's after tonne's of R&D give such sh*tty life. The question here remains, where is the "do no evil" agenda here?

shra1 said,
where is the "do no evil" agenda here?

The "don't be evil" is Google's motto, not the motto of every app developer displaying ads. Therefore your statement is null and void.

Also, as it appears that pretty much everyone had no Idea that Ads used so much battery power there would be no reason to fix such an issue. The battery drain was also unintentional, and therefore not evil.

So, the excessive use of power is not evil, nor was is deliberate. I'm sure Google and developers will be working closely together to improve the efficiency especially as Google serves most of the ads.

I would also like to point out in my personal opinion that perhaps the test itself may have been slightly flawed as different methods of data transmission used more/less power (3G vs Wireless for instance) Until we look at the full report and see what was casing so much consumption not much can be said though.