Originally Posted by Carniphage
The iPhone OS is Unix.
It does do multi-tasking. It always has and always will. There's stuff going on in the OS all the time. Checking for stuff while you are running another program.
The phone keeps running, the mail keeps running.
But Apple has prevented 3rd party applications from running in the background.Why no background apps?
Apple do not know how much memory and CPU resources will be consumed by 3rd party application when it is in background. Not to mention 4,5 or 50 apps all running at the same time.
It could be that the application in question is a good citizen - or it could be a resource hog.
When you come to use Safari, and that hog is sitting in the background, Safari sucks.
Whose fault is the suckage? Who gets the blame?
Without performing extensive metrics on every application, Apple can not guarantee that background apps would not impact on the foreground task.
This is why Apple apps are
allowed to run in the background. 3rd party apps are not.
We can't trust developers to create apps which will be good citizens. We need the system or Apple or something to prevent background apps from destroying the foreground experience.We could shut down the hogs!
This is the solution offered by Microsoft. Launch task manager. And let the user kill-off the hogs.
Apple does not work like this. In a consumer device it's better to limit the device than have something that behaves unpredictably and requires the user to solve a performance issue.
Every app should be able to launch, and work flawlessly because its developer can assume getting 100% of the device - not a meagre 10% share of the device.But multitasking is useful!
What do you mean by useful?
A) In a multi-tasking system, if you return to an app - it carries on immediately from where it left off.
B) And it's cool to have something running in background - like a music player.
But both A and B can be achieved without multitasking. Apple can introduce OS mechanisms to permit both behaviors, without ever letting 3rd party apps run in the background.
In the case of A) it can leave suspended applications in memory. Ready for instant resume.
And in the case of B) Apps can hand over control to tiny resource limited micro-apps which are called by the OS.
Apple's goal is to offer a flawless experience, which is not compromised by background apps consuming an unpredictable share of the resources. I am pretty confident we will see these changes in OS4 - which will offer all the benefits of multi-tasking without the ugly downside.