Multitasking - iPhone OS 4 vs Nokia N900 (cool900.blogspot.com)

26 points by pqs ↗ HN
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.

41 comments

[ 3.1 ms ] story [ 89.1 ms ] thread
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)

But the iPhone's is more useful, easier, and less prone to introduce UI stutter, heat, and battery drainage.
Can you define "more useful" and "easier"? The rest is a known price for the functionality.

Especially - how is it "more useful" to have a stripped down version of multitasking -vs- multitasking? And what exactly is easier? For me it's a) tap the corner b) choose an app. For iPhone user it's a) tap the home button b) choose an app.

Your satire is profound and humorous. Here, have another glass of cool aid.
I don't believe any of that (including all of it simultaneously) will be impossible on iPhone OS 4.
(comment deleted)
"Notably missing? Anything for managing a conversation, like IM or Twitter, which is a big omission."

http://www.engadget.com/2010/04/08/multitasking-comes-to-iph...

The idea is to use the Push Notification Service for that. Whether that's a good solution to the problem or not is up for debate. (It works fine for me for IM; I don't know of a service that uses it to notify about Twitter events but there might be one.)
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.

Skype seems to work just like the normal Phone app. Watch the demo starting 22:25 (http://events.apple.com.edgesuite.net/1004fk8d5gt/event/)
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)
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).
Ah, I think you may be right about IRC. Apple continues to want such things to be done via Push Notifications. Which is a pretty good solution for most things, though not all. E.g. I do IM (Windows Live) via Meebo, an app that uses notifications, and don't have any problems with it. IRC seems like it could work pretty well through such a system, too, though I don't know if anybody offers that service.

They specifically showed Skype as being able to run (continue calls or receive new ones) in the background through a very similar UI to the current built-in "Phone" app, so I think you'd be good on that one.

Can you write an alarm clock app? I don't see any way to make that work. There is no system-level service to tie into. It seems to me that the iPhone 'multitasking' model prevents a great many use cases.
To add to the list, I have emacs 23 and citrix client running on this beast.
That's pretty awesome.

How is the n900 otherwise? Is it a good phone? Would you buy it again if you had to do it all over?

I'm not the parent poster, but I also love mine as a phone and a computer and would totally buy it again given the choice.
I adore it. It's been the most flexible and trouble-free portable device I've ever owned.

Edit: but I find the only issue being with some locked iTunes music -- can't play it here. iTunes Plus and what I (now) get from amazon mp3 is fine.

I wouldn't recommend it to "normal" people - just because it's still a bit big and doesn't have that many apps. But for hackers it's just perfect imho. The real keyboard feels nice. You've got open access to whatever you want (and open-source access to almost everything). You can deploy your own scripts / apps. You can use multiple IM and voip accounts by default.

If you want to try the interface, you can install the maemo sdk (scratchbox) which will just run the real interface on your screen via X display.

Doesn't the microphone pick up the sound of your fingers tapping?
I'm normally muted during the lecture part so it doesn't matter. During the discussion I'm unmuting myself only when I'm actively talking... So in case you were interested in the microphone property - I have no idea :)
(comment deleted)
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.
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?

> 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)

Because whatever Apple makes is laced with pixie dust and unicorn farts. Therefore their products are not limited to the quaint physics of the universe.

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.

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.

Those scenarios seem to be possible with iPhone OS 4? Right? Downloading podcasts in the background is already possible with iTunes, task completion may make that possible with third party apps also (I don’t know, would be nice if someone could confirm that one – seems only logical that if you can complete uploads in the background you also can complete downloads). Quickly switching to Mail while answering a call is possible already now (the Phone runs in the background since day one), now it’s just also possible while making VoIP calls. So where’s the problem?
Since their example of task completion was allowing flickr to continue to upload your photos after switching away from the application, I'm sure downloads will be possible as well.
Downloading podcasts on the background with the iPhone's iTunes is a pain in the ass. It is not possible to subscribe to programs on iTunes, one has to search the podcasts each time. The experience is suboptimal.

In theory the iPhone is the best smartphone there. It is much more beautiful than Maemo5, of course, but, as I said, I do much more with maemo than with the iPhone.

Of course I never used iPhone OS 4. But the article shows that the Maemo has done it much better than Apple.

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.

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

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