The Background Task Conundrum
Windows Phone Live Tiles are undisputedly one of the most recognized features of this young OS. When WP first launched, the first few apps that added Live Tile support were the rage. Everybody wanted them. There were comments that the (then) 15 Live Tile limit was not nearly enough for all the apps that were on the way. For some background, Live Tiles originally worked in one of two ways. Either a “push server” was required to push updates through Microsoft’s servers to your phone on a periodic basis, as often as once per minute or as infrequent as when you requested information. But this solution was quite costly for a lone developer with an app that might only see a few hundred downloads a week. The second method was “pull” which allowed an app to complete a task in the background (yes, this is what Background Tasks are based on), but still required a call out to the Cloud. So apps like Urban Dictionary could call out once per day to fetch an update from a server (not necessarily theirs) for its Live Tile.
Everything was going smooth. The WP masses were happy. Then the dreaded Registry Endpoints bug revealed it’s ugly head disabling the feature that everyone had become so enamored with. Live Tiles and the developers that offered them took a bum wrap (after all, they didn’t do anything wrong) and the Live Tiles craze cooled down for a bit.
Then the Mango update was announced, introducing Background Tasks, and a fix for the Endpoints bug. Increasing the Live Tile limit to 30 didn’t hurt either. All was good in WP World again. There was virtual dancing in the streets. But then something strange happened. Developers stopped introducing “push” Live Tiles. Instead, everyone opted for the easier, and less expensive Background Task. Now, maybe I missed something along the way, but my understanding was that the primary purpose of Background Tasks was to: 1.) allow media apps to operate in the background when your phone went to sleep, or 2.) allow apps to open in the background, complete a task locally, and then close again without any need to go out to the Cloud.
We all understand how #1 works. Let me try to explain #2. CleverToDo is a great task management app, with a very nice Live Tile. Problem was, prior to Background Tasks, the only way for the developer to show due and past due tasks automatically on the tile would have been to uploaded everyone’s tasks to his server, manage due dates and then “push” that information back down to devices on a periodic basis. Lots of data moving around and quite a challenge for a small developer. Not to mention security issues, etc. Now with Background Tasks, CleverToDo can check the tasks in your database locally and update the Live Tile. No need for a connection, a server or the Cloud.
I don’t begrudge any developer taking the easy way out and using Background Tasks for their Live Tiles. But Microsoft has chosen to limit Background Tasks to 9. That’s a problem. Especially with new Live Tiles apps being introduced every day, and that 30 Live Tile limit that everyone got excited about last year. Actually, I have not seen a new app launch since the introduction of Mango that uses the (now fixed) “push” method for updating tiles. Nada. Two apps that I have been using since the beginning; Sports Scores and Pro Sports Scores, both use “push” servers and have been working perfectly since the Mango Endpoint Bug Fix. I am sure there are other “push” apps, although I have yet to run across them. But for example, this morning I installed the new LinkedIn app, and you guessed it, the app added a Background Task without asking as usual, maxing out my list. With 8 current Background Tasks running (3 locally and 5 fetching data), I don’t have much wiggle room and often find preferred Tasks being disabled by these intruders.
Not sure why big name weather and news apps cant use “push” to send info to your phone on a pre-determined (by the user) basis. Not as if they can’t afford a few servers and some apps could actually benefit, providing “nearly instant” info and offering a real Live Tile, rather than the minimum 30 minute update as stipulated by Background Tasks API. I suspect it has to do with a commitment to the platform or something like that. In any case, it’s a problem that needs solving.
So what can Microsoft do. They can start by increasing the Background Task limit from 9 to something more reasonable, like 15 maybe. Then again, if nothing changes that number may have to grow to match the Live Tile limit to be effective. Doing some testing now, but honestly most Background Tasks use very little power so adding a few more would not have much of an impact. A better solution would be to convince the big players to use “push” servers, or develop a third option for the power apps, so Background Tasks could go back to being used the way they were originally intended.
As usual, I learned something useful about the workings of WP by reading your post, Jim. Thanks.
Wowww.. Nice post… Iv learnt something new.. Hope Microsoft does as well….
Very informative post.
I wasn’t aware of this problem… but very good explanation! Thanks!
Finally a reasonable explanation of what is going on. I always thought something is not good about wp7 background tasks and a clear reason that famous apps like Skype Viber cannot work in WP7 its truly a shame if its not fixed in Wp8 I will concider switching