

 Multitasking - iPhone OS 4 vs Nokia N900 - pqs
http://cool900.blogspot.com/2010/04/multitasking-iphone-os-4-vs-nokia-n900.html
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.
======
viraptor
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)

~~~
glhaynes
I don't believe any of that (including all of it simultaneously) will be
impossible on iPhone OS 4.

~~~
viraptor
The way it was presented, I'm pretty sure I won't be able to run an
application which should stay connected while I'm doing something else. So IRC
+ anything is pretty much excluded. Also skype will be integrated in a way
that it takes your desktop space, instead of just being there in the
background.

Maybe I understood it wrong, but that was my impression from the presentation.

~~~
ugh
Skype seems to work just like the normal Phone app. Watch the demo starting
22:25 (<http://events.apple.com.edgesuite.net/1004fk8d5gt/event/>)

~~~
viraptor
My point about skype was not that it cannot be backgrounded, but as I said
"skype will be integrated in a way that it takes your desktop space". Not sure
what happens when you have more accounts - if you can do that at all and if it
continues adding new bars... but I prefer it completely invisible like in N900
(especially when I have 2 voip accounts and 3 more voice-capable xmpp accounts
online)

~~~
ugh
I doesn’t take anything. The double high status bar is a standard UI
convention of iPhone OS. It appears when something requires your interaction
and is in the background (like ending the call or stopping the voice
recording).

------
gaius
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.

~~~
martythemaniak
Can we stop the FUD?

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?

~~~
gaius
First) A tech-savvy Android user knows about leaving things running in the
background. An iPhone user may not.

Second) How is this relevant? If you want roaming on, it doesn't imply you
want apps to use it without your explicit request. Concrete example: leave
Google Maps running logged into Latitude and it will merrily talk on the
network by itself.

------
nick-dap
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.

------
DrJokepu
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".

~~~
vetinari
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.

~~~
DrJokepu
While I'm no expert at Android architecture I own an Android phone and I think
there are there are two ways an app can run in the background on Android:
first, there are the "background services" (or whatever they are called) but
my understanding is that there are also six slots of apps that aren't
"hybernated" they're just not "focused" - they might not consume any CPU
cycles but they're still in the memory. I would axe this second type of
background tasks. Correct me if I'm wrong though, I always wondered how it
works exactly.

~~~
vetinari
Actually, there is only one way the application can run in background: the
"service".

The "background slots" are implementation details. Applications do not receive
the event "you are going to be killed, please serialize" the same moment they
lose focus; they receive it at the system's discretion. The system decides
based on memory available (mostly), whether it will leave some processes
running or whether they will be "backgrounded" (basically, what is more
economical - backgrounding processes all the time, when the user is switching
between two apps, or just keep them both in memory?).

To some extent, this is tunable by the power users - if they download "Dev
Tools", they can set the limit to 1 - 4 processes (or unlimited). It is
basically trade off between memory consumption and responsiveness.

I repeat - this is not supposed to be setting for common users; it is just
exposed for developers to experiment, what happens when they push the decision
threshold in one direction or another. The system is supposed to have good
default out of the box and manage the processes automatically (which is also
reason, why there is no task manager).

------
jsz0
_"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.

~~~
zacharypinter
"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.

------
vegai
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.

