When I heard about the “multitasking” that was being added to iOS4, my first response was, “FRAUD!!!” My impression was that Apple was being clobbered by Android that has multitasking, and Steve said, “We need something we can call multitasking!”
For clarification, here is what they came up with, and why it’s not true multitasking.
It’s a two prong approach. You have the “fast app switcher”. Double-tap the home button, and it brings up a list of recently-used applications. For applications that are updated to iOS4, they have the ability to temporarily stay in memory so the user can easily switch between them. You’re in Mail. taptap..tap, and you’re in Twitter (or Safari or whatever). Does every app ever run stick around forever? No. When switched, apps save their state and go into a “You can kill me if you need to, but I’m ready to come back whenever” state. Maybe the last 2-3 apps (not counting the standard Mail, Safari, Phone, iPod, that seem to ALWAYS be running!) are still running. They aren’t getting any cycles, but at least they’re still in memory, ready to resume at a moment’s notice.
Then, if the phone is hungry for RAM, it kills off one of these suspended apps, freeing up memory, and everyone’s happy.
The other prong is the ability for an app to perform a limited number of background tasks. These include GPS, audio, download control, and maybe a couple others I don’t recall off the top of my head. But suffice to say, they are very limited.
And that’s why what Apple has done with iOS4 is not what I would consider multitasking. Multitasking means multiple arbitrary programs are running at the same time. It means I get to decide if an app will keep running. But with the exception of a small set of specialized tasks, iOS4 only allows one (3rd party) program to be actually running (not just “in memory”) at a time. What Apple has done is NOT multitasking. FRAUD!!!
There. I said it.
Contrast this with my iPhone’s previous operating system, a jailbroken 3.1.2. There, the same double-tap on the home key brought up kirikae, a method for easily backgrounding an application. You could background as many apps as you wanted. The apps kept running, kept updating their displays (even though said displays weren’t visible). Pandora audio in the background? No problem. TomTom? Sure thing! Keep an ssh session alive while you check your email? Done and done!
Eventually, of course, the phone would run out of memory, and apps would start failing. But I’ve been multitasking since the Carter administration. I know what I’m doing. If I’m done with an app, I kill it. No problem. I typically kept my Twitter app du jour running all the time (I use Twitter enough that I have some real experience with most Twitter apps, and often switch between them), but almost never used it for anything else, being the responsible multitasker that I am.
And, I gather, that’s more or less how Android and other multitasking mobile platforms works. I’ve not heard of people having problems with Android getting bogged down in too many apps, but then again, most everyone I know I’ve talked with is tech savvy enough to avoid that (or maybe Android doesn’t enable multitasking by default?).
But the fact is, not everyone is that savvy. I remember once, back in the 80s, I was doing tech support for a company. One of the secretaries was complaining that her workstation was getting very slow. Now keep in mind that she wasn’t using a PC, but a dumb terminal attached to a mini computer running UNIX. Some of her work was on another mini computer. But she knew that if she needed to be on one computer, she would type “rlogin yavin” and if she needed to be on the other computer, she would type “rlogin endor”.
When I went there, I noticed that she was logged onto both yavin and endor at least a dozen times. She had, over the course of the day, remotely logged from one computer to the other, then back to the first one, then back to the other one! So every keystroke had to go back and forth between yavin and endor upwards of 20 times. No wonder her computer was slow!
I mention this to point out that not everyone is aware of background tasks, or even what’s going on on their computer beyond what they actually see with their eyes. And I know that someone at Apple had exactly this same thought and knew, “We are NOT putting that on the iPhone!!”.
So here’s what I think was the thought processes behind the design of iOS4 “multitasking”.
Rather than just say, “We need the ability to run multiple apps”, they asked, “Why do we need to run multiple apps? What problem of the end user will we solve when we have whatever we will finish designing today?”
First, the end user doesn’t care that they can have 5 apps running in the background. That means diddly/squat to them. So what do they care about?
They care about being able to go from where they are in one app (in one message, or composing a tweet or something) to another app, then go back to the first one, and not have to see a splash screen and lose all the work they had done.
They care about being able to listen to any music they want (eg. Pandora) while they’re doing something else.
And they care that TomTom won’t let them miss an exit while they’re in the passenger seat, watching a movie.
So, rather than say, “How do we get multitasking on the iPhone?”, Apple said, “How can we solve these issues of end users?”
And that’s what they’ve done.
It’s not perfect. I’d prefer some way to know at a glance which apps are in memory, and which apps aren’t. While they gave the option of removing apps from the switcher, they don’t show you easily why you’d want to. I’ve heard supposedly knowledgeable people thinking that the apps in the switcher are all the apps that are currently running. They’re not. Not by a longshot.
And there’s no easy way to control what apps that would otherwise be running constantly. This is probably more an issue with app developers than Apple (TomTom, I’m looking at you here. You give me no UI way to kill (or properly suspend) TomTom without losing the route. I shouldn’t have to use the switcher).
And of course the app has to be modified to support fast switching. I wish the App Store had an option, “Only show me apps updated for iOS4″. I avoid wherever possible apps that haven’t been updated for iOS4.
But in general, even though it maybe shouldn’t be called “multitasking”,. what Apple has done in iOS4 has certainly solved most, if not all of the reasons why an end user might want to have multitasking.
And frankly, I think their “multitasking” solution is far better than (for end users) than the real multitasking that’s offered by other platforms. Good job, Apple!