Jared Newman of PC World thinks that Apple blew it with respect to the multitasking in the iPhone:
Here’s the funny thing though: all these industry pundits keep ranting about how features of the iPhone or iPad are really terrible, and yet when polled, people who buy iPhones are overwhelmingly satisfied with their phone choice. Perhaps pundits should reconsider that they don’t understand the phone market as well as Apple does.
Newman states (correctly) that multitasking is something that has to be explicitly coded into applications. And here’s the odd thing: it would be better for the phone as a whole if most developers simply chose not to.
It’s all about battery life. If your program really doesn’t have anything to do when you aren’t staring at the screen, the iPhone will nicely not let it do anything when you shift to another process. It basically shuts down your application, perhaps storing some information so that when you re-run the program, you can go right back to where you left. Many apps are kind of lazy, and just restart the program (often displaying time wasting banners) each time, which is one of the reasons that people claim they want multitasking. For 90% of these cases, just writing the applications better would be sufficient.
But I’ll be the first to admit that there are processes which don’t fit this model, and actually do require some CPU time while the user isn’t staring at them. For instance, Google Latitude isn’t really useful on the iPhone, because it was only a web application, and therefore was really only running when you were running Safari. This kept you from informing anyone of your position if you pretty much were doing anything else. You’d like to keep your music playing. Perhaps you’d like some long downloads to complete. All good stuff.
With IOS4, Apple has given you the capability to make that happen. And yes, as a programmer you have to be explicit about that. It’s a teensy bit tedious, but frankly if you are going to make an effective app, you should really be on top of the resources that your application needs. In particular, you shouldn’t be viewing your application as necessarily so important that cutting your clients battery life unnecessarily is a virtue.
Just a quick aside about the iPhone Task Manager: in most cases, you don’t need to access it at all. Hitting the button in the task manager is just like hitting its icon on the main screen. If it is more convenient to find the application on any of your home screens, just do it that way. You will need to access it only to delete processes, and properly coded apps don’t really need to be explicitly deleted anyway: if the iPhone needs to delete an application because it runs out of memory, it will do so in a well defined way that allows you to restart the application in a consistent state.
Is iPhone multitasking amazing? No, not really. But neither is it horrible. It’s a reasonable set of design choices to ensure good user experience.