In reading the following article the other day "Study: Free Android Apps Can Steal Your Phone's Power" I was reminded of all the trade-offs one has to make when designing mobile applications. Before we dig into some of the trade-offs one does have to wonder about the purpose of one company doing a sanctioned study of another companies products. We'll leave digging into that topic for the another day.
Now back to the topic of mobile trade-offs. Some might argue this, but the single most important thing to design for is minimal power consumption. Power is so important on mobile platforms because users really don't want to hang out at charging pods in airports, plug in on the train, plugging in at a friends house, ... One of the big delighters of the original Kindle was it could run for weeks on a single charge. The newer Kindle Fire lasts less than a day like most of current gen platforms. In looking at the new iPad3 it has a battery almost twice the size without any addition device life ~10 hours. So where is all that power going? The two biggest draws on power are the screen and radio. You have some control of the power consumption on the screen. The dimmer you go the longer you go. The iPad3 has a super dense screen and new graphics CPUs. I wonder how many people would keep the old screen and CPUs for 20 hours of use on an iPad2?
I have a Windows Phone 7 (yes I am willing to admit I have one - I'm a techie) and just use it as an in house wi-fi device. What totally surprised me is the phone lasts for weeks without the radio on. The first time I had that happen I was pretty surprised by just how much impact the radio did have.
While I've talked able the screen and radio we can't ignore use of the processor (CPU). Most mobile devices have ARM chips which do all kinds of cool things like clock the CPU lower when not in use, have low power cores for when the phone is idle, etc. The take-away is doing really CPU intensive work like my fractal app at http://www.tonyware.com/fractals will drain your power. It has my phone because zoom in is so cool :)
So what are some of the trade-offs for mobile you should be thinking about?
- Do you really need to send data to your backend server every 10sec or would once an hour be good? Not only will this save power it will also cost your customers less of their network bandwidth. (Rule #1 - Use the radio less)
- Does having a white background really make the App better? Can you choose dimmer colors? If the App is idle should you dim the screen? (Rule #2 - lighting up more pixels uses more power)
- What about pushing more computation to the server rather than having the phone do it? (Rule #3 - Dont use the CPU for big calculations)
The last point around doing work on the server rather than the phone is one of the reasons Google AppEngine is growing so quickly for mobile. The more you can do on the server the more power will be saved. Its also very likely the computation will go much faster on the server. The trade-off on the developer end is how to manage cost while getting the best customer experience. By the way computation in the Cloud are far "greener" than on any other computer device. But that is a topic for another day.
Hope this got you thinking....
Anthony F. Voellm (aka Tony)