Multitasking in iOS 4 is not a magical sparkle pony

As we wait for iOS4 to be released, I think it's important to try to help folks keep reasonable expectations for what iOS 4 will and won't do, especially as it relates to "multitasking." Apple has to take some of the blame for this hype, especially when it's listed as the #1 feature of iOS 4, saying "Now you can run your favorite third-party apps - and switch between them instantly - without slowing down the performance of the foreground app or draining the battery unnecessarily."1

Did you notice that 1? The big print giveth and the little print taketh away. Down at the bottom of the page, Apple tells you that multitasking is "available with apps that have been developed to work with iOS 4." That means that any app that isn't tweaked to be multitasking-aware simply won't play nice with the feature.

And even that isn't the whole truth.

Read on for more...

Let's take a quick look back before we look forward. The iPhone has always been able to do multitasking: email is checked, the iPod app continues to play even when not active, calendar and clock alarms go off, SMS/MMS and push notifications come in, and so on. Most of those have been available as long as the iPhone has been around (push notifications are the latecomers, arriving in OS 3.0). You can sync contacts and calendars via MobileMe (and more recently, ActiveSync) over the air and in the background.

What has not been possible is for "third party" applications (those apps not made by Apple) to keep running in the background. That means that if you were using a GPS app, listening to music in Pandora, fetching RSS feeds, connected via SSH to another computer, or any number of other applications, you were stymied for background use. As soon as you exited those apps, whatever they were doing stopped.

With the upcoming iOS 4, Apple has announced a solution for some of those applications, but only a handful of specific kinds of applications: location data, voice over IP (VoIP), and audio. You will be able to stay on a Skype call even if Skype is in the background, once Skype adds support for it. You will be able to listen to Pandora Radio in the background once Pandora adds support for it. Your GPS app or other location-aware app will be able to keep tabs on your location in the background, once it is updated. In fact, Tom Tom has already announced that its navigation app will be background-ready, so your "At the end of the road, turn left" announcements will come through even if you're doing something else.

That's it, though. Background processing is extremely constrained to three specific areas, which Apple believes will cover most of the things that most people want to do most of the time.

Since what iOS 4 is offering is not really unfettered multitasking, Instapaper can't program itself to automatically update itself every X hours or minutes. Neither can your RSS reader. Neither can Simplenote. Neither can 1Password. Neither can TextExpander. Neither can any other application.

One of the other features that won't be delivered in iOS 4 will be the ability of macro/text replacement apps like TextExpander to work across the entire operating system. On the Mac, TextExpander automatically works in any app. On the iPhone, it only works in apps which have specifically added support for it, which means that you will probably never be able to use TextExpander in Mail, for example.

There is some good news and some bad news. Apple says "apps can remember where you left off," giving you much more fluid switching between apps as they resume where you were when you left. The bad news is that this will not happen automatically; just like the three background cases above, developers will have to add support for it.

According to a few developers who talked to, don't hold your breath for multitasking support in all your apps. One developer said "Why would you want to multitask during a game?" I don't know who this developer was, but I would like to remind him/her: the iPhone is innately a multitasking device. All applications should be ready at all times to exit at the user's command.

Why? Because the phone might ring.

If the phone rings and I answer it, will your application bring me back to exactly where I was when I left off? It should, but very few applications get this right. With iOS 4, that oversight is going to be much more glaring especially since Apple is promising people that apps can remember where they left off. Starting with iOS 4, if your app doesn't do that, your customers are going to expect that you are working on a new version that will. Yes, even the gamers. Save your state and bring us back where we left off when we exited your application and you'll be ahead of most applications.

I'm thrilled that Apple is taking this incremental step with multitasking in iOS 4. I'm willing to accept that they have managed to successfully balance battery life with increased flexibility. It will be enough that most people will probably stop saying that "the iPhone doesn't multitask" even though that's only partially true. As battery life continues to improve, who knows, maybe in another year or two we'll see "background updating" for applications such as RSS readers and Instapaper. Until then, this is a trade-off; not necessarily a bad one, but one that you need to understand. You will probably have to wait for some apps to support it, and for some apps iOS4 won't change anything.

For more reading on this I suggest checking out Marco Arment's blog; he's the lead developer of Tumblr and Instapaper, and he also wrote about iPhone multitasking and background updating.