For the entirety of the iPhone’s life, tech heads have cried for one feature more loudly than any other: Background apps. And now, with iOS 4, we have it. And I hate it. Perhaps I should qualify that. There are some minority cases where I like having background processes. Leaving Pandora playing in the background […]
" />

Background Apps: OMG My Phone Iz Broke!

For the entirety of the iPhone’s life, tech heads have cried for one feature more loudly than any other: Background apps. And now, with iOS 4, we have it.

And I hate it.

Perhaps I should qualify that. There are some minority cases where I like having background processes. Leaving Pandora playing in the background is nice. Letting a GPS app maintain its fix can save you from missed turns. But outside of apps that explicitly need to execute code in the background for very good reasons, nothing changes. Developers have already been designing their apps to look like they never closed when you return to them. The experience is the same.

Except for one crucial problem: All apps built with the iOS 4 SDK will stay in memory by default, even big, memory intensive apps like games, unless they opt out.

In theory, iOS will kill these background apps when it needs to free up memory. It practice, it doesn’t appear to use enough prejudice in doing so. When I play Zen Bound 2 or Plants vs Zombies, both resource-intensive games, quitting with the Home button sends the game to the background. If I tap the icon again, the game reloads right where it was, which is nice, but unless I force-quit the app (double-tap the Home button, hold down on the app’s icon, and then tap the red minus sign — not intuitive), every other operation on my phone, even something as simple as loading a page in Safari, takes orders of magnitude longer to process.

How many users know enough about what’s going on under the hood to realize that force-quitting background apps will fix their phone’s performance? How many even know they can? Less than 1%, I’d wager. The rest will just think the phone is broken.

As an example, take my wife — please! (No, don’t.) While reading her email, the Mail app froze. After a few seconds, she gave up, pressed Home, and tried to open Facebook, which refused to load. Being the reliable tech geek I am, I carefully and painstakingly explained how backgrounding works, why it was causing her apps to behave the way they were, and how to force-quit the offenders. She then proceeded to spend several minutes force-quitting every single app in her background dock. I eventually explained to her that not all of those apps were necessarily running in the background, but no user should need to know the difference.

Perhaps things are better on the iPhone 4 (I’m still using a 3GS — holding out for 64GB!), but the solution to the problem is so simple: iOS should kill background processes more readily, starting with memory-slurping games — almost all of which save their state to disk when stopped, anyway — leaving more critical processes like music and GPS as last resort kills. Why Apple has not at least done this I find astonishing.

The current implementation of backgrounding is awful. The stark simplicity of day-to-day iOS life — launch an app, do some stuff, close it, forget it — is gone. It used to be you would press the Home button, and your app would close. Now, you press the Home button, and your app closes unless one of myriad opaque conditions are met.

It puts additional responsibility on developers, too. Which, okay, they should be responsible about how their apps consume resources, but at least in the pre-iOS4 time, users were well protected from careless memory hogs. Developers have been trained from day one to expect a sandbox when their apps launch, with the rest of the system protected from them, and them from it. The philosophy had its disadvantages, but at least we as developers didn’t have to worry about other developers dragging our apps down.

I like being able to hear Pandora or leave a GPS app running while I check Twitter. These are good things. The iPhone is a more complete device because of background apps. Unfortunately, the new functionality is resource intensive, opt-out only, and requires extra under-the-hood expertise from users. Apple should sit down and reevaluate how iOS handles backgrounding. We expect more elegance than this from Cupertino.

Continue reading:

TAGS: