Right before the Thanksgiving holiday, I picked up a new Nokia Lumia 920 and had the week free to play around with it. Right off the bat, the battery life seemed pretty good, but a few days later I came across a bit of a problem with battery life (meaning I was getting maybe 7 hours – not even a whole day). Without benefit of Mark’s Sysinternals Tools, it was time for a bit of debugging without a debugger.
My job was made somewhat easier by the occasional “ping!” noise from my pocket. After a while, I finally pieced together what that was – my pocket was going “ping!” every time it was speeding. (Which obviously was always the result of an unexpected gust of gale-force tail wind, since I would clearly never intentionally violate the law.) It was then that I discovered a new feature in Windows Phone 8: Background Location Tracking.
You see, I had started up the Nokia Drive (Beta) app, and then just pressed the Home key to get back. Normally, even if the process wouldn’t end, it would still be suspended – which was good enough. It’s no longer being scheduled by the CPU and memory will be freed when needed. But developers imagined scenarios where background execution could be interesting – perhaps providing feedback via a Live Tile, or (as demonstrated at Build 2012) tracking a run.
But I wasn’t trying to track my journey, and didn’t need feedback at all. Yet, here I was, sacrificing my battery to track a location that I didn’t knowingly choose to have tracked. And boy, was it burning fast!
This is today’s conundrum for application developers. We can envision scenarios where having true multitasking support is useful. But – how often do we actually need them? While it’s easier to conceptualize a world in which your app is running all the time, does the user really want to donate his battery to that cause? And can app developers be honest and admit that their application is not The Most Important Application in the History of the World? The scenario of “I would like my battery to last at least all day” is something I hit daily – the scenario of “I would like to track my location on an app I am not looking at” is something I hit … never. Makes me wish someone had brought some data into the decision rather than just their imagination before choosing a default.
Of course, had I closed the app with the “back” key rather than the “start” key, I wouldn’t have faced that problem. But I like the idea of just suspending an app – assuming it complies with my expectation that it’s then not still being scheduled for CPU time.
Of course, I then found a couple of additional things via web searches. I uninstalled and then reinstalled both Facebook and Skype, and then I let my battery run down to zero before recharging (which was pretty easy to do with battery life as it was). After doing these things, battery life now exceeds my expectations – hitting over 2 days with my typical (moderate) use!