The introduction of multitasking for iPhone OS was a huge disappointment. Apple has left out most of the functionality that makes multitasking useful on a small screen, and is spreading FUD about the alternatives.
Confirming that N900 multitasking is much more exciting than iPhone's. Maybe some people don't need it at all. Maybe some don't need more than suspended applications and a glorified notification framework. It's fine - they are not power users.
I value the true multitasking on my N900 though. In a moment I'm going to join a weekly phone conference over Skype, put it on loud speaker, join the conference's IRC in x-chat and will be checking the links posted in the channel in a browser (probably going to look at some emails I receive in the meantime too). Yes - all of that on my phone.
(of course battery will last ~1½ h as it's all over WiFi, but it does't matter that much - just going to start charging it at some point)
OK, but it's not that Apple doesn't know how to do it, and it's not that the OS doesn't support it. It's that the user experience Apple wants to create is that whatever your device is doing, you press it's single button and it takes you back to the home screen in a known state. It's an aesthetic/usability choice, not a technical one. If you want to, I dunno, run SETI@Home on your phone in the background, sure why not, get Android, but most people don't want a) their batteries to run down unexpectedly because they left something running without thinking about it and b) apps to be using the network while they're roaming, incurring charges. Apple's single-tasking is about making the user feel in control of what is a complex device.
I was the owner of an iPhone. When I lost it, I bought a Nokia N900. Since then, I use my phone much more than before, and multitasking is one of the causes of this increase. Of course, my battery life is worse, as I use the phone much more.
And what I do is not running SETI@home. I download podcasts on the phone using gpodder. That's much better than any option available on the iPhone. When I'm at home, I like to read some mails while podcasts are downloading and answer a call if somebody calls me.
When my wife is driving, I like to be able to read e-mails while Sygic (the in-car gps application) tells her when to turn right or left (running on the background).
These two scenarios would be beneficial to iPhone users.
First, how is leaving a battery-intensive service on Android different from leaving a battery-intensive background task on iPhone? (The Flickr photo upload example)
Second, are you aware that data-roaming is off by default on Android and you have to explicitly turn it ON from the settings?
Further, Apple specifically constrains multitasking to keep the user experience smooth and fun. Allowing free multitasking is a path to madness. Only a power-user would care or want it. And even though eventually a power-user would need to rebuild from scratch to remove bad apps. (Which of my 2000 apps is sucking CPU cycles now? Can't tell.. better reinstall from scratch.)
I've yet to see a better implementation of multitasking on a mobile device than Palm's webOS. You have to see it in action to appreciate it.
As a developer you don't have to include more code to make multitasking happen. An event fires when the app becomes active and when it deactivates, but its your choice to handle them or not.
Sometimes I feel the whole world misses the point about multitasking on mobile devices. Here's what I think:
* Existing iPhones offer an infrastructure to quickly save and restore the state of your application so that it can be "hibernated", therefore reducing the need for real multitasking.
* Obviously, due to the limited display size of mobile devices, you can't have two apps running on the same screen at the same time, it just doesn't make sense, so an "inactive" app is off the screen, hence most of the time it doesn't matter if is actually running or hibernated. Just like on the iPhone.
* Sometimes, you still want your app running even when it's off-screen. Things like music players (Spotify for instance), mail tools (gmail fetching email in the background) or social tools (a twitter client fetching the latest tweets that you can read later even if you don't have signal).
* Notice that generally, for things that you want to run in the background, you don't need an active UI. There's no need for UI for an audio player in the background, a mail reader syncing in the background, etc.
* Solution: disallowing code that is eligible for running in the background to have access to the screen. This will make he background tasks a lot leaner as it would force developers to separate "service-like" code from "application code" and enforcing strict memory/CPU limits on "background services".
And this is exactly how Android does it - you can spawn thread that will run in background, but it will be a "service" - UI-less part of your application.
In addition, there are events notifying application that it is going to be "hybernated"; basically it tells it to save whatever information it needs to restore into current state.
"The lack of proper multitasking is a high price to pay for 10 seconds of pristine behavior."
For some people that may be true but to keep things in perspective Apple has sold ~80 million iPhone OS devices with no third party multi-tasking at all. Obviously it's just not that important to a significant number of people buying mobile devices. If it doesn't meet your needs obviously you need to buy something else but why discount the motivations of other people? I like the iPhone specifically because it works really well 99.9% of the time with zero upkeep on my part.
"Obviously it's just not that important to a significant number of people buying mobile devices."
Probably better to say that multitasking is not important enough to affect people's decision on whether or not to buy an iPhone. I'd be willing to bet it's still quite important to a large number of people. I suspect many will upgrade their 2g/3g just for multitasking.
The best handheld device I ever had was a Palm. It did not multitask; instead, it required that every piece of software can save its state so it can be closed in a way that is rather transparent to the user.
[+] [-] viraptor|16 years ago|reply
I value the true multitasking on my N900 though. In a moment I'm going to join a weekly phone conference over Skype, put it on loud speaker, join the conference's IRC in x-chat and will be checking the links posted in the channel in a browser (probably going to look at some emails I receive in the meantime too). Yes - all of that on my phone.
(of course battery will last ~1½ h as it's all over WiFi, but it does't matter that much - just going to start charging it at some point)
[+] [-] lallysingh|16 years ago|reply
[+] [-] bitwize|16 years ago|reply
[+] [-] sp332|16 years ago|reply
[+] [-] glhaynes|16 years ago|reply
[+] [-] gaius|16 years ago|reply
[+] [-] pqs|16 years ago|reply
And what I do is not running SETI@home. I download podcasts on the phone using gpodder. That's much better than any option available on the iPhone. When I'm at home, I like to read some mails while podcasts are downloading and answer a call if somebody calls me.
When my wife is driving, I like to be able to read e-mails while Sygic (the in-car gps application) tells her when to turn right or left (running on the background).
These two scenarios would be beneficial to iPhone users.
[+] [-] martythemaniak|16 years ago|reply
First, how is leaving a battery-intensive service on Android different from leaving a battery-intensive background task on iPhone? (The Flickr photo upload example)
Second, are you aware that data-roaming is off by default on Android and you have to explicitly turn it ON from the settings?
[+] [-] rickmode|16 years ago|reply
[+] [-] nick-dap|16 years ago|reply
As a developer you don't have to include more code to make multitasking happen. An event fires when the app becomes active and when it deactivates, but its your choice to handle them or not.
[+] [-] DrJokepu|16 years ago|reply
* Existing iPhones offer an infrastructure to quickly save and restore the state of your application so that it can be "hibernated", therefore reducing the need for real multitasking.
* Obviously, due to the limited display size of mobile devices, you can't have two apps running on the same screen at the same time, it just doesn't make sense, so an "inactive" app is off the screen, hence most of the time it doesn't matter if is actually running or hibernated. Just like on the iPhone.
* Sometimes, you still want your app running even when it's off-screen. Things like music players (Spotify for instance), mail tools (gmail fetching email in the background) or social tools (a twitter client fetching the latest tweets that you can read later even if you don't have signal).
* Notice that generally, for things that you want to run in the background, you don't need an active UI. There's no need for UI for an audio player in the background, a mail reader syncing in the background, etc.
* Solution: disallowing code that is eligible for running in the background to have access to the screen. This will make he background tasks a lot leaner as it would force developers to separate "service-like" code from "application code" and enforcing strict memory/CPU limits on "background services".
[+] [-] vetinari|16 years ago|reply
In addition, there are events notifying application that it is going to be "hybernated"; basically it tells it to save whatever information it needs to restore into current state.
[+] [-] jsz0|16 years ago|reply
For some people that may be true but to keep things in perspective Apple has sold ~80 million iPhone OS devices with no third party multi-tasking at all. Obviously it's just not that important to a significant number of people buying mobile devices. If it doesn't meet your needs obviously you need to buy something else but why discount the motivations of other people? I like the iPhone specifically because it works really well 99.9% of the time with zero upkeep on my part.
[+] [-] zacharypinter|16 years ago|reply
Probably better to say that multitasking is not important enough to affect people's decision on whether or not to buy an iPhone. I'd be willing to bet it's still quite important to a large number of people. I suspect many will upgrade their 2g/3g just for multitasking.
[+] [-] unknown|16 years ago|reply
[deleted]
[+] [-] vegai|16 years ago|reply