At the WWDC in June, Apple announced their Push Notifications system, which will give iPhone applications a way to display messages to the user even when their app isn’t running. While this will give chat, microblogging and feed reading applications some semblance of running in the “background”, many users (including myself) haven’t been thrilled with this solution (and not just because it’s still not out yet!), as it doesn’t allow for cases like music streaming, or background location polling.
At the SDK event, Apple gave a number of reasons why they didn’t want to support true background processes for iPhone applications:
- Having lots of applications running could quickly use up the limited resources and battery on the iPhone, causing performance problems.
- They didn’t want the user to have to worry about managing active programs with some kind of complicated “Task Manager” interface.
- If applications could continue to run in the background without any visual cues to the user, it would be that much easier for apps to perform unintended/unrequested operations.
I think there’s a way for the iPhone to provide better support for background applications, without breaking the requirements listed above. Think about what happens when you’re on a call, and you tap the Home button. You can launch applications, and pretty much do whatever you like while still on the call. Here’s what this looks like:

You’re aware that you’re still on a call because of the bar at the top of the display, and you can tap to return to the call if you wish. I think background applications could work the same way, and in so doing wouldn’t break any of Apple’s requirements:
- Only one app could be in the background at a time, so you wouldn’t have lots of apps hogging the resources of the phone. Yes, you’d have another process using resources in addition to the foreground application, but it wouldn’t need to use any of the graphics framework, and in my experience the iPhone would be powerful enough to handle this kind of limited processing.
- Nothing is hidden from the user. They know exactly what’s happening in the background because they’re being told at the top of the screen, and can tap that bar to return to the app. Another nice benefit here is that perhaps the application could customize what gets displayed in this line, so an app like Pandora could have the row say “Now Playing: Enter Sandman by Metallica”.
- No Task Manager is necessary. The way users interact with the background app is intuitive because background phone calls already work the same way.
Of course, this isn’t a perfect solution since only one app is running in the background at once. If you want something to run 100% of the time, then you’d never be able to run an additional background app on top of that. However, I think a system like this in addition to the Notifications framework solves most of the desired use cases for background apps: music playing/streaming, location polling, real-time text updates, and so on.
What do you think? Would this kind of system solve the problems you have with background apps on the iPhone?



