iPhone OS: We Don’t Need No Multitasking… But We Need Something

| Dave Hamilton's Blog

There's been a lot of discussion lately about the iPhone OS's lack of multitasking. That is, the iPhone OS can only let one app run at a time, and this is a frustration for many people, myself included.

The introduction of the iPad has led to an increase in this chatter, largely because the assumption is that this device, too, will be limited to (essentially) running only one app at a time.

The iPhone DOES Multitask

To be clear, the iPhone OS supports multitasking just fine. It shares its core with Mac OS X and obviously that runs multiple apps without any concern. The iPhone OS is no different, and many apps DO run in the background including Phone, Mail, Safari and a few others. The problem is these are all Apple's apps, and no third-party apps have been granted permission to do this.

Multitasking Leads to MultiCrashing

I get why Apple is hesitant to allow third party apps to run all the time. Prior to being an iPhone owner, I used a Palm Treo 650 for over two years. It took me (a self-professed geek) close to three months to get that thing to run without crashing multiple times per day (yes, day). The reason for every one of those crashes were third party apps running in the background. I wanted the functionality those apps provided, so I had to run them, and it took me those three months to find the perfect mix before getting it right (and then I didn't change a thing!).

Even though Apple approves every app you can use on your iPhone (another rant for another time), there's still the possibility of one or more of these apps causing some negative condition. That could be a complete crash or it could simply be that the app is so hungry for processor RAM that it causes excessive battery drain or a system slowdown. You, as the user, likely wouldn't know what was causing this, and you'd simply complain that the iPhone is slow or its battery life is even worse than it really is. That's bad for Apple, and these are likely some of the reasons they don't allow more than one third-party app to run at a time.

We Don't Need No Multitasking

The thing is, I'm not sure we really need apps running in the background. Let's think about this: how many apps do you have open right now on your Mac? Of those, how many are actively doing something you care about vs. those that are simply open, waiting at the ready for you to bring them to the front and use? My guess is that for most average users, the only app you care to have running is the one in the front. The rest could very well be frozen in stasis until you bring them to the front to resume your work, right? In fact, that might even be better since that way all of your computer's resources could be devoted to making the frontmost app work the best.

The same is true of the way most of us use the iPhone. We don't need apps to multitask, we simply need apps to sit dormant in the background waiting for us to bring them to the front. This way we don't "lose our place" in the app when we want to go check mail or look something up on the web before returning, and the app doesn't run away with anything in the background.

What About Messaging?

As for all those Twitter, instant-message, or third-party email apps (we just need 'em!) where you may actually want it to poll and process in the background, there are two workarounds here. The first is something Apple has already implemented: push notifications. These are functional, but require a server-side commitment from the developer. I'll be the first to agree that this isn't perfect, but it works. The second is something also already implemented by Apple: To be efficient, Apple's iPhone Mail app can be set to check mail in the background at pre-set intervals, otherwise it, too, basically sits in stasis. Why not let this "polling interval" be usable by many apps. The iPhone OS is event driven, so simply create a new event that says, "hey, wake up and do your thing, but do it quickly or I'll shut you down." Then, every 15, 30, or 60 minutes the iPhone OS tells each app to do its thing and then freezes the app back into stasis when it's done (or when time expires, perhaps after 30 seconds). The apps just have to do their polling, all the screen updates and the rest can simply wait until the next time the app is brought to the forefront.

Don't Forget Memory

Yes, this still leaves the issue of the limited RAM available on the iPhone. Each app in memory (be it active or in stasis) still takes up memory. For this, I think the answer is to invoke some sort of virtual memory system on the iPhone. In a simple example, Apple could allow the operating system to save applications and their memory space off to the Flash storage when in stasis, only to bring it back when requested. Perhaps it would be possible for an app to leave just a bit of code in RAM and the rest in Flash, for those apps that need to use the polling interval model above.

There could even be a fixed limit that keeps a maximum of, say, 5 apps in stasis at any one point in time. I think that's more than enough, and allows us most of what we'd need from "multitasking" while still avoiding the potential pitfalls therein.

We Need Something

Somewhere, somehow, this issue needs to be solved. Especially with the iPad, but even with the iPhone, there are many instances where we want to leave an app in a certain state while we bounce out to check mail, look something up on the web, write in the notepad, or some other quick task before we return to our work. Let's hope Apple figures this out soon, for our sake and theirs.

Sign Up for the Newsletter

Join the TMO Express Daily Newsletter to get the latest Mac headlines in your e-mail every weekday.

Comments

Tiger

Good job Dave. Well said. And I’m sure Apple is working on those issues. Preserving battery life has to be of paramount importance. The iPhone battery life is pretty dismal now. It will improve as technology improves. Users will always push the envelope and want more. It’s “how fast can you get it for me” that is Apple’s main task at hand.

ilikeimac

What about apps that want to play sound, such as streaming audio? Seems like another exception many users would want, but these apps are already treading on the thin ice of “duplicating” the iPod functionality in the phone and Apple may not feel kind enough to grant them the privilege of background operation.

Constable Odo

People seem to be complaining that they can’t use Pandora music streaming while doing other things.  Maybe Apple should give certain apps the ability to multitask.  To me, music streaming seems reasonable since I do occasionally listen to music while doing other tasks on my computer.  It doesn’t take up very much in the way of CPU cycles or memory.  Or as was said, put a fixed limit of any apps that are allowed to multitask at one time.  I’d go with three open the max.  I’m only in favor of giving those small amount of power users some choice.

Most of the low-tech users I know that have iPhones, lack of full app multitasking doesn’t seem to bother them at all.  They’re a different breed from the smartphone power users of the past.  The new crop of smartphone low-tech users just want a responsive and simple interface without any of the complications of crashes.  I think these type of people make up the bulk of iPhone sales, not power users.

aardman

Agree.  Aside from music, which iTunes takes care of, the only time I need multitasking is doing background rendering of video while I’m doing something else.  I don’t foresee myself doing video editing on an iPad, much less an iPod Touch, until the iPad gets way more powerful that it is right now.

Dmitry

You don’t get the point: we’re talking about _mobile_ apps. Off the top of my head - I’d love to receive severe weather alerts, or road construction alerts, as I travel from place to place, by an app that’s running in background, tracking my location via GPS and providing the said alerts.

I’d like to listen to last.fm and check my email without having to stop the playback.

I’d like applications I frequently use to not take a rather long time to launch each time, instead just switching from one to another.

I’d like not to have to disconnect my ssh sessions every time I need to check something on the web, or check my e-mail, or even stop the playback of the forementioned last.fm app.

All that can be done on Android, without any probles - no crashing, no performance issues, and battery life is at least _twice_ the same of the iPhone. Android is not perfect - it’s still kinda rough around the edges, but it gets the job done.

Bosco (Brad Hutchings)

Dave, Android manages to avoid the crashing problem by putting each application into its own lightweight but heavily insulated Java virtual machine. Processes communicate with an explicit messaging architecture. This is 2010. Android has used this approach since its inception. Apple could catch up.

Tiger

Apple has 140,000 apps and 4 billion downloads.

Android could catch up.

Snarky comments aside, the devices are evolving before our eyes. And the makers are pushing each other, which is good for consumers.

Chris Brightwell

Your virtual memory proposal is infeasible for the same reasons the iPhone doesn’t offer garbage collection: resources are too scarce.

Your request for “remember where I am when I exit, then go right back there when I re-launch” is dependent on the developer.  If they stick to the Apple HIG for the iPhone, their apps would already do this.

See “Starting” and “Stopping”, here:
http://bit.ly/c08ZXw

FLetch1967

Some Radio Stations in the Wunder Radio app have a “press here to play in background” link. When pressed, the app closes and the stream is reopened in Quicktime which you can they close and open other apps without losing the feed. Either Wunder Radio has figured out a work around without Apples approval or Apple has signed off on this solution. One station that has this option is WXPN.

Urby

I don’t think that full apps have to run in the background, just snippets. And I think the same approach as PNS needs to be taken: there may be multiple apps that request push but they all go out of a single gateway to the PN server which does all the heavy lifting. The result is a very seamless experience. I envision an extension to this: for the person who mentioned the weather app, think of what Dave wrote: there could be a daemon that takes notes at pre-set intervals of where you are (GPS), what you are listening to, and other relevant info that I can’t think of, and makes it available to the PN servers so that you can be notified when there will be a weather problem, etc. The heavy lifting would still be done server-side, with minimal on-device processing. But I definitely want a more advanced PNS… the iPad’s gonna need it!

Bass Ackwards

Agreed, I can live without true multitasking (though I would like it, I get why it can be tough to accomplish on my phone), but I really wish Apple would work in some manner so I could at least do something like simply respond to or send a text, and maybe even answer a phone call/check new voicemail message without having to completely exit an app.  This is the number one issue that almost gets me to jailbreak my phone, but I’m a wuss with that kind of stuff and just remain patient.

Amazing that three years ago I was happy to have a phone that just took pictures.  Now I complain that my phone won’t let me operate third party applications while browsing a fully rendered internet and text message people.

BAW

Dave, you’ve hit it perfectly for me when you distinguish between apps in stasis and those trying to do something continuously in the background. One of the most used apps on my MacBook is Application Switcher. What would be nifty with the iPhone/iPad OS is if I could tag my most used “active apps” in some way that would not use up system resources, but so I could have maybe 10-15 really important apps identified without always having to look for them. Then figure out a way to swipe from one active app to another without having to go back to the Home screen. I want something that would give the illusion, speed, and functionality of switching from app to app to app without actually wasting the resources to do it.

banjoey

I don’t think Pandora would want users to run their stream in. The backgroung since they use the app to display the ads that makes the service free. I haven’t used it in a while, but unless they changed to audio ads that would dry up the revenue stream, wouldn’t it?  (That was a real question and not a rhetorical one, btw)

gotta wonder

From the article:

This way we don’t “lose our place” in the app when we want to go check mail or look something up on the web before returning,

Well-designed apps are supposed to do this.  Users expect the app to pick up exactly where it left off.

Now think, why exactly do you need to step away from an app for a moment?  To check something on the Web?  To fire off a quick email?  To add/change something in Contacts?  Apple already provides the API’s for developers to do all this from within their own apps.

Now OTOH, remember the early days of Rhapsody and OS X?  Where we argued ad nauseum about the Unix underpinnings and how, in theory, applications should never need to be “quit” because they don’t use any resources when in the background?  This is the same Unix under the iPhone; why can’t the same hold there?

Jeff @ Mac About Town

I have to believe that Apple has internal builds of iPhone OS that have concepts for application switching, Expose for iPhone (if you will). I can easily picture, say 4 applications running in a 2x2 grid on an iPad (after tweaking some super-well hidden, power-user only Settings switch). My guess is that it won’t be long before we’ll see some off-by-default setting for power users to turn on and knowingly accept the possible consequences of memory leaks slowing down or requiring a device restart. Eventually, the hardware will have enough muscle and the software enough protection that the multi-tasking setting can be turned on by default. This is evolutionary of course, not revolutionary, and is only a matter of time.
——-
Now, I can also see Apple providing a system level service for plugging in different applications for certain classes of functionality: music playing/streaming, instant messaging, twitter, rss, mail, etc. (just like on the desktop, url schemes are already on iPhone OS). Apple controls the low level code and calls out to “user space” to accomplish some task or respond to some event.
——-
I’d have to agree that there would need to be some limit in place for the number of applications allowed (at least initially). I, too, would be happy with 4 to 5 as a starting point. My guess would be for 4, since that’s how many the iPhone “dock” has right now. Not too much of a stretch to imagine that being able to float over the current application and a new option to have the physical home button bring it up.
——-
Despite the fact that the iPad runs iPhone OS, we need to keep in mind that the usage scenarios for iPad are likely VERY different from usage patterns on the iPhone or iPod touch. As is evidenced by the iWork suite on iPad, iPad apps are potentially used for longer periods of time and are definitely more “mini-desktop” than “maxi-iPhone” (that’s as close as I’m going to venture on wordplay).
——-
I predict all sorts of intersting iPad sessions at WWDC this year (can’t wait)! The only downside is that now I’ll have yet another iPhone OS device to tote along to the conference! MacBook Pro, iPhone 3GS, iPhone (1st Gen), iPod touch and now an iPad. The conference bag BETTER be able to handle all of that stuff!

JonGl

The real reason the iPhone doesn’t have multi-tasking is simple. NIH. The iPhone multitasks just fine. It can even quit processes (apps) that are taking too much memory that aren’t necessary. I do it every day, and one of the main reasons I want it is to run Skype or Fring in the background, so I can receive Skype calls over my internet connection from the States. I also get tired of waiting for apps to launch, even if they do return to their previous state (which some do not do very well).

The real reason why Apple won’t do it is because the absolute best way to do it has already been invented and implemented—by Palm on the Pre! ProSwitcher brings this to jailbroken iPhones, and it works like a charm! My apps don’t crash, and the only time I ever run out of memory is when i try to download video via QT or YouTube. I’ve had as many as 9 or 10 apps all running at once with no problems. Since Apple’s own apps know how to clear themselves of memory as needed, it works just fine. Oddly, the only apps that have crashed on me were ones that I was running _without_ multitasking. In every case, they were cruddy programs I was trying out, and they froze on me. They didn’t stay on my iPhone.

No, I’m sure that the main reason why we haven’t yet seen multitasking on the iPhone is because Apple has not yet figured out a way better than the Pre’s for doing management. Although rumors are that 4.0 will bring multitasking. I’m hoping it will also bring freedom from carriers, so I can de-jailbreak my iPhone. (perversely enough, the only reason I broke mine is because of a dishonest online seller who proclaimed a “new, factory-unlock”—which are actually common here. Since I didn’t trust him to give me my money back if I returned the phone, I decided to at least try it jailbroken. In the end, while I’m not ecstatic, I’m at least satisfied with how it performs)

-Jon

Pat

We need multitasking.  Try listening to Rhapsody while sending a txt message or an email on an iPhone.

JulesLt

Dmitry - I’m amazed you’re getting twice the life of an iPhone, as it contradicts what other people report when multi-tasking with Android - are you comparing similar usage patterns / devices

I think the main gap is around developing location aware services (server-side push is fine for event driven services and alerts, but not for real-time location aware stuff).

As other people have pointed out - background audio streaming is possible, provided you stick with the supplied APIs (which presumably interface nicely to hardware or firmware based acceleration, rather than using a lot of CPU).

farlander

@JulesLt: Yes, the pattern is similar, yet the Droid can go on without the need to recharge for 2 days, while iPhone can’t even make it a full day - I have to plug it in around 6:00pm, when taken off the charger around 8:00am in the morning the same day. Part of the problem is AT&T’s crappy network: iPhone is forced to constantly be hunting for towers, because all of them suck, while Droid doesn’t have to do that thanks to the excellent coverage by Verizon.

human.0.id

People seem to be complaining that they can?t use Pandora music streaming while doing other things.  Maybe Apple should give certain apps the ability to multitask.  To me, music streaming seems reasonable since I do occasionally listen to music while doing other tasks on my computer.  It doesn?t take up very much in the way of CPU cycles or memory.  Or as was said, put a fixed limit of any apps that are allowed to multitask at one time.  I?d go with three open the max.  I?m only in favor of giving those small amount of power users some choice.

Yes, it probably doesn’t take much CPU cycles, but it uses WiFi or 3G connetion very well so it will drain the full battery capacity in couple of hours.

JulesLt

Thanks Dmitry - makes a lot of sense.

Someone elsewhere pointed out a good point about Pandora - they could implement an audio background stream solution, but that would actually undermine their ability to serve in-app advertising (as I’m not a Pandora user I don’t know if this actually is the case).

And yes, on the final point - I find the whole concept of audio-streaming to battery driven devices to be a bit bizarre (the model for long-battery life in computing is to work fast and then spend as much time idle as possible - long-running processing is bad)

To Peace

JonGi finally said it for me.  Skype in the background.  I’ve heard people talking about running Pandora, etc but I have plenty of music I like the iPod app and it works for me (this is just my use case).  But as a frequent international traveler, having an alternative to extremely expensive phone calls running in the background would be extremely useful.

In the small conspiracy part of my brain I think this is a money/profit issue all around.  Using Skype, Fring, etc undercuts the carriers Apple signed on with to provide calls, SMS, etc.  Using Pandora undercuts profits from songs sold in Apple’s own iTunes store.

In the end, I believe Apple made the decision not to multitask so as to maximize battery life and minimize chance for conflicts with the overall goal of ensuring a great customer experience for the masses.  Something that doesn’t take 3 months of troubleshooting to achieve.

farlander

Well, clearly they didn’t do a very good job in the battery life department, seeing as iPhone can’t make it through a day on one charge, while Droid can… Yet iPhone doesn’t multitask and Droid does. Go figure wink

Bosco (Brad Hutchings)

In the small conspiracy part of my brain I think this is a money/profit issue all around.? Using Skype, Fring, etc undercuts the carriers Apple signed on with to provide calls, SMS, etc.? Using Pandora undercuts profits from songs sold in Apple?s own iTunes store.

Apple going into a venture doesn’t think like this. Business planning and/or forecasting on that large of a money scale just isn’t possible. They cannot connect all the dots before hand and know how things will play out and precisely which restrictions will make things play in Apple’s favor. They can have an intuitive sense of some strategies to try, but the emergent systems are just way to complex to plan.

Apple in the middle of a tornado, however, will take full advantage of the cards it’s managed to palm. iTunes music DRM is the best example of this. Nobody could have predicted (nor did anyone predict) that the DRM would better serve as a tying mechanism between iPods and iTunes Store, because there had never been an example of that kind of arrangement and outcome. But Apple got a couple of extra years out of that tying after everyone including the labels realized what was really going on.

With multi-tasking, Apple may very well be thinking, “hey, look what we’ve dealt ourselves”. That new Vonage app that’s being advertised nationally, for example, isn’t terribly useful if you need to look up a sushi restaurant or email a photo mid-call. Funny how that compares to functionality shown in the Apple/AT&T ad.

AJEMOBILE

Everyone just needs to jailbreak their iPhones and quit complaining about it - I’m running Pandora and Sugarsync while I’m posting this right now in Safari.

Wikinger

Good discussion, and let me say, I definitely need backgrounding/multi-tasking, because only when I put the iPhone AOL (or Yahoo) messenger app in the background will I appear to be online, and my sister in Germany will usually only IM me when she sees me online.  See?  And yes, I NEED AH.FM internet radio streaming too.  And I need all that and still be able to use my iPhone as usual. 

My $.02

Kasted Out

You do realize that multitasking should easily be supported? A computer running Windows 95 with 166 mhz, 16 mbs of Ram and 1 gig of memory can handle it from decades ago, so a phone like this should easily be able to.

It’s not that hard for people to remember to close unwanted apps or a warning message to pop up to say “Would you like to close these apps?”

Log-in to comment