

Why the iPad and the iPhone don't support multitasking - pWneD
http://blog.rlove.org/2010/04/why-ipad-and-iphone-dont-support.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+rlove+%28Robert+Love%29&utm_content=Google+Reader

======
carbocation
> "Both the iPad and iPhone, as mobile devices, have limited memory (256MB in
> the current incarnations) and no hard drive. No hard drive means no swap
> file."

He loses me here. My iPhone has a 32GB SSD hard drive. Sounds like a perfect
medium for swap space to me...

~~~
glhaynes
Yeah, that's poor wording.

The techie in me was aghast at the idea of Apple shipping iPhones with a full
Unixy kernel but with no swap (and minimal background processing -- and for
that matter, I wondered why its Objective-C runtime didn't support garbage
collection) until I actually laid hands on one and realized how fluid things
can be when they don't stutter and stop randomly while swapping in parts of
the foreground program.

Such jerkiness gives a feel of "computeriness" to the user when running
desktop OSes, breaking the feeling of fluid interactivity that one gets with a
"real-world" object. It also causes a lot of user anxiety and even errors: it
becomes a normal part of the experience to click on an item and then have a
second or two of wondering whether the app "heard" you or not. Often followed
by more clicks, which end up being misinterpreted when the app finally gets to
run again, and now the user's mental model is completely out of sync with the
system's state.

In the physical world, you never flick a real switch on a panel and then it
actually moves a second or two later!

~~~
astine
"In the physical world, you never flick a real switch on a panel and then it
actually moves a second or two later!"

I know some old lights which do that.

~~~
glhaynes
I didn't mean the resulting action might not take a moment, I meant the actual
movement of the switch.

------
stcredzero
_Apple says they do not support multitasking because it is a hamper to
stability and a drain on battery life. That clearly isn’t true—the iPad has
plenty of processing power and battery capacity. Rumor is that Apple is going
to add multitasking in a future OS release. This rumor likely is true. Is
Apple somehow going to make background applications not consume any battery?
Of course not. These excuses are straw men._

Actually this argument is a straw man. Apple can't make background processes
run for free contrary to the laws of thermodynamics. However they can limit
the resources they can use through the right API. (Register functions with
realtime constraints, and request a "level of service.")

------
tlrobinson
Saving the state of an application and terminating it isn't multitasking...
you can already do that on the iPhone, and indeed well written iPhone apps
will be restored to exactly the state you left them.

I care about multitasking for things which actually need to do stuff in the
background, like Pandora or IM clients.

------
jcromartie
So the android solution is for apps to serialize their state when they are
about to be terminated? That's exactly what iPhone apps are expected to do!
What we are really talking about here is backgrounding, which is really only
appropriate for a small class of apps. Push solves a lot of these cases. The
audience for backgrounding without push is mostly power users, and they can
jailbreak for that.

------
AndrewWarner
I have mult-tasking because I jailbroke.

Just as he says, Skype keeps getting killed when it's in the background so I
can't depend on it for getting calls.

------
kjhghjmkedfcv
Of course there is the official Apple solution.

[http://technologyexpert.blogspot.com/2010/03/wozniak-
carries...](http://technologyexpert.blogspot.com/2010/03/wozniak-carries-two-
iphones-to-fix.html)

------
bmalicoat
The only issue I take here is the iPhone is supposed to not need an
instruction manual, everything is supposed to be intuitive. Adding
multitasking like the Android means every user becomes an accountant keeping
track of what's running and what should be killed. Activity or task managers
are most definitely not intuitive. Most apps don't have any business running
in the background, saving and resuming states seems to work in most cases
especially with smart use of push notifications.

I've really only seen a couple compelling use cases and that is Pandora
(basically music running in the background for the uninitiated) and the YC
Wakemate app. Anyone have any others that couldn't be solved with push?

~~~
necubi
The big issue is that it imposes a high mental cost for switching between
applications. If you're browsing on Mobile Safari and you want to look up
something in another app, you generally wont, because by the time you get back
to Safari you may have lost the page you were visiting and in any case the
startup times can be pretty atrocious.

On the Pre, which has the best multi-tasking implementation I've seen, these
sorts of tasks are a no-brainer. You know that your previous applications is
just a couple of swipes away, so you're never afraid to leave it.

Constantly shutting down and restarting applications may be good for
performance and battery life, but the user experience is hampered.

~~~
blubb
Which is why Safari IS actually multitasking. You can leave it, launch another
app, go back to it and be right back where you are. Sometimes Safari doesn't
quit and you're back in a millisecond. Other times the OS closes the browser
in the background, and you will have to wait a few seconds while Safari
reloads the page you were visiting.

It's surprising how few people realize that the built-in apps (Mail, iPod, SMS
etc) run perfectly in the background. The lack of multitasking is limited to
3rd party apps, which helps explain why most iPhone users never complain too
much about the lack of real multitasking.

~~~
nooneelse
But Safari being multitasking only solves the "browsing -> other -> back to
browsing" case, right? "Something else -> Safari -> back to the first
something else" needs the something else to be multitasking enabled or good at
storing its state.

Trying to predict what the users will and won't ever need to switch to and
from and back to again is a crap shoot in general. Sure one can get it right
much of the time, but why not just suck it up and make the overall solution
better so there aren't those cases where one guesses wrong.

From the outside, this feels like a bizarre, "accept no criticisms of an Apple
product as valid" kind of thing. Stuff like Browser Duo and mini apps make it
clear that the longer Apple doesn't solve this in general, the more other
developers will put together "do x and y at the same time" applications. Does
it really seem better to have these kludges than a general solution?

~~~
0x44
"something else" -> "web browsing" -> back is handled by the application
wrapping the Safari web browser using the included browser control in the API.

~~~
nooneelse
Good point. I was just doing an inversion in the example to simplify the
argument mechanics a bit.

But doesn't that wrapping rely on something else's developers realizing that
the user might want to go off to the browser and back? What if it wasn't
Safari in the middle but any one (or three) of the numerous other programs the
user might want to take a side trip through. It gets back to the crap shoot of
trying to guess every multi-application use case that will be wanted. All this
to defend not putting together the general solution which is entirely doable
to begin with.

------
iaskwhy
I would be more than happy with no multitasking at all with one exception:
sms.

And I'm pretty sure that if I include another two apps (safari and mail) on my
exception list most people would be okay without multitasking.

I don't need a window manager, I need to focus on the app I'm using and the
ability to reply (or send) sms and mails and check something on the web
without quitting the current app.

~~~
enjo
There are a range of applications, including highly useful ones, that simply
needs multi-tasking. Anything that is time based (think calendars, alarm
clocks, etc...) really need multi-tasking to work correctly. A host of
location aware applications really need multi-tasking to work effectively.

I get Apples position. The iPhone is the spiritual successor to the PalmOS. It
looks, feels, and works very similarly to it. Even early finger-based
applications first made their appearance on the Palm (here's looking at you
SnapperMail with your fat finger mode). The Palm had thousands of apps and
solved a ton of problems without multi-tasking. So I get it... you can build a
really useful device without it.

Yet there is so much more you can do with a well thought-out system like
Android has. As Android gets more traction (and thus more developer interest)
I think your going to see more and more separation between the quality of the
apps available on the devices. There are simply going to be killer
applications that force Apples hand to stay competitive.

~~~
stcredzero
_There are a range of applications, including highly useful ones, that simply
needs multi-tasking. Anything that is time based (think calendars, alarm
clocks, etc...) really need multi-tasking to work correctly. A host of
location aware applications really need multi-tasking to work effectively._

Very few apps need completely open ended multitasking. Most apps need very
specific capabilities. An API for registering time limited functions with
timing, location, and other services would take care of 90% of the needs out
there.

~~~
theBobMcCormick
I think you've just made enjo's point for him. You said "Most apps need very
specific capabilities. An API for registering time limited functions with
timing, location, and other services would take care of 90% of the needs out
there." That IS almost exactly the very well thought-out system that Android
provides and that enjo was talking about.

------
jsz0
We know from SDK snooping that Apple is working on third party multi-tasking
so it's kind of a moot point. The only question is how they're going to do it.
I think it's good to acknowledge that a mobile device with limited
battery/resources has to multi-task differently than a traditional computer
running an OS designed 20-30+ years ago.

------
gte910h
This guy is just wrong: Apple OS has _turned off multitasking_ for 3rd party
apps to maintain battery life.

It fully supports it. This is a control situation, where Apple has decided "We
want our devices to have good battery life more than we want to allow
multitasking".

~~~
buster
Best thing about those excuses are:

Every other mobile OS supports multitasking and all the smartphones i know
have similar battery life. Symbian, Windows, Android, all have multitasking
and yet people try to convince me that it, "not needed", "not possible",
"makes the device unstable", "drains battery too much" which is just not true.
My Android phone lasts at least as long as an iphone and i use multitasking
all the day. It's just that the OS was truly made for this and it does it
quite well.

~~~
tumult
If I leave an app running in the background that keeps the net connection open
on my Nexus One, the battery goes from 100 to 0 in about 5 hours.

~~~
orangecat
I'd bet that app was poorly written and doing something else in the
background. An app that is just listening for data from an open connection
should be using roughly zero CPU. But we'll try science; I've signed into AIM
on my Nexus One and left it running in the background. The battery is at 81%
now, I'll report back in an hour.

~~~
kreneskyp
If you keep a connection open it drains battery life because the chip can't
power down.

~~~
theBobMcCormick
Sort of. In tumult's case he's got a connection that's actively downloading
data and playing music. I would assume that'd keep the radio chipset (either
wifi or cell, whichever he's using) and the CPU both from being able to switch
to a lower power standby mode.

However, you can have an open but _idle_ connection open in the background
with only minimal battery drain. That's how pretty much every kind of _push_
notification or IM system works, even on cell phones.

------
TheAmazingIdiot
And in practice, its still wrong. The 3rd party repos have an app called
Backgrounding that does precisely that... And no sdlowdown on most apps.

~~~
spudlyo
It's very handy. Sometimes you want to have Safari start loading a slow-to-
load page, put it in the background and do something else. Pandora radio is
another oft cited example.

