Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
ok - so to someone doesn't know any better - they aren't getting multitasking as they think they are by your definition. IE - If I had twitter open and had it docked then left - 20 min came back, I would expect that as SOON as I opened it, it would be current. But (and we'll have to wait and see) it seems as though you're suggesting that the twitter client would simply download the latest after I've opened it.

So all that dock saves me is going back to the app (whatever screen it's on on my iPad) and opening it up again.

So - I don't really consider that multitasking. But the dock it sits on, to a general user will appear as if that's what that dock is for...

You're misunderstanding. The Apple API will check your twitter updates in the background while the actual twitter app remains frozen. When you tap twitter, your app will already be updated and ready to go. It won't have to download anything when you tap the icon.

Did you watch the event? Watch the Pandora demo. They change songs from the lock screen. Then they open Pandora back up and the album art is already changed to the new song. They didn't have to wait for anything. Yet, the full Pandora app does not run in the background, only the Apple processes that Pandora needs are running in the background.
 
You're misunderstanding. The Apple API will check your twitter updates in the background while the actual twitter app remains frozen. When you tap twitter, your app will already be updated and ready to go. It won't have to download anything when you tap the icon.

Did you watch the event? Watch the Pandora demo. They change songs from the lock screen. Then they open Pandora back up and the album art is already changed to the new song. They didn't have to wait for anything. Yet, the full Pandora app does not run in the background, only the Apple processes that Pandora needs are running in the background.

I didn't understand or misunderstand. I was responding to another poster and how they were describing what would and would not multitask. Review the thread :)
 
You're misunderstanding. The Apple API will check your twitter updates in the background while the actual twitter app remains frozen. When you tap twitter, your app will already be updated and ready to go. It won't have to download anything when you tap the icon.

In the case of things like IMs or Twitter, this is incorrect. None of the new background services allow for things like this. Someone specifically asked this question at the event yesterday and the answer was to continue using push notifications.
 
Did you watch the event? Watch the Pandora demo. They change songs from the lock screen. Then they open Pandora back up and the album art is already changed to the new song. They didn't have to wait for anything. Yet, the full Pandora app does not run in the background, only the Apple processes that Pandora needs are running in the background.

Pandora app was using the audio background API. ETA -- I'd be interested to know what happened with the album art, however. It may have been a quick update vs updated in the background. Or maybe there's more to that API than described on stage.

There is no API to update something like Twitter (besides Push).
 
having to double click the home button every time is lame imo. I wish it wasnt even there really. Steve does his fair share of backpedaling.
 
I took it as "If you have to manually mess around with processes", in other words, worry about monitoring resources, see what processes are blocking/slowing others, then you have failed. Of course you still need some graphical way to switch between apps.
 
In the case of things like IMs or Twitter, this is incorrect. None of the new background services allow for things like this. Someone specifically asked this question at the event yesterday and the answer was to continue using push notifications.

Didn't they demo local notifications? I didn't watch every demo because I was tired last night, but I thought there was a local notifications bullet point on the screen.
 
Didn't they demo local notifications? I didn't watch every demo because I was tired last night, but I thought there was a local notifications bullet point on the screen.

There are local notifications, but they have to be scheduled in advance of the app going into the background, not on demand.

having to double click the home button every time is lame imo. I wish it wasnt even there really. Steve does his fair share of backpedaling.

You never have to use or think about it if you don't want to.
 
It's not a task manager. It's an app switcher. None of the apps are actually running in the background, so there is no need to close them to manage resources. Only the seven services that Apple described actually run in the background.

App switcher by definition is a castrated task manager. Both show the list of tasks (task manager shows more info). Both allow to kill the application and bring given application to the forefront.
 
App switcher by definition is a castrated task manager. Both show the list of tasks (task manager shows more info). Both allow to kill the application and bring given application to the forefront.

The app switcher in OS 4.0 does not allow you to "kill the application," because the application is not running when it is not in the foreground.

The point of Jobs' quote is that you will never need to use a task manager to free up resources. The system handles it all automatically.
 
The app switcher in OS 4.0 does not allow you to "kill the application," because the application is not running when it is not in the foreground.

The point of Jobs' quote is that you will never need to use a task manager to free up resources. The system handles it all automatically.

Task Manager = App switcher for the last time. Apps may or may not use background APIs while in the sleep state so take Pandora for example. You can hear the music in the background. If you go to the App switcher and kill the app, you will cease to hear music. Therefore you can kill that app and free up resources.

Oh and the system handles resources automatically means if there isn't enough memory the app will close.
 
MP support is limited to the seven APIs. People may make assumptions of what multitasking means, but if a function is outside of the APIs then that assumption would be wrong.

Yes, but one of the seven APIs (Local Notification) opens the door to having your app do any kind of processing in background.

There's nothing faux about it. It's just a bit unconventional from the way developers are used to thinking about background processing.

The app does get callbacks from the APIs. Otherwise, the app wouldn't have any control over what goes on during background processing. Yes, a couple of them COULD function without any interaction with the app whatsoever (for example, playing music) but for the most part, it is NECESSARY for the API to interact with the app while in background. The app is getting control at certain points during background processing, and is NOT limited to calling just the 7 APIs during that time that it has control.

As an example, GPS. What could the GPS system possibly do for an app without the app receiving notifications from the GPS system? Absolutely nothing useful. So, the app requests that the GPS system notify it when certain events have occurred - say, you've moved 100 yards or more, or accuracy has changed. At this point the app gets a callback, and can do pretty much anything it wants - for example, update internal memory, save some data in a file, or even send some data over the network. What it CAN'T do is update the UI. That's specifically disallowed. I assume, though, that there's some way to notify the user that you'd like them to switch to the app to take a look-see, and then the app can update the UI.

Local Notifications are a catch-all. You can use that API to arrange to have your app "wake up" either for a one-time event or periodically. On Windows or Linux, this would be called a timer callback. (I think there's more to Local Notifications than that - for example, I think it can be used for some inter-app messaging.) Pretty much anything an app could do by simply having it's main thread continue to run can be done using periodic timer callbacks. I can see how this could complicate I/O programming - I assume an app won't be able to simply wait on a completion (while handling a background callback), for example. In conventional background or thread processing, you'd just make an I/O call, and the thread would be suspended and woken-up when the I/O is completed. What apps will have to do is poll for I/O completion. If the I/O isn't complete, return from the callback, and check again on the next periodic callback. Until very recently, this was the preferred way of dealing with I/O on Unix-like systems anyway. Big deal. A little back to the future.

From what I've read, (and corresponding to my previous prediction) background tasks will get shorter time-slices, so developers need to be efficient in their background processing, or they may not get enough processor time to complete the desired task(s). Good. There are a lot of sloppy iPhone developers, and, frankly, background processing is going to be over their heads. They are going to bitch and whine.

I'm a developer. I've been writing stuff that is massively multi-tasked (Windows, Linux) for years. This is exactly what I had hoped for. I had hoped Apple would limit the amount of stupidity that developers could build-in to their apps.

Letting an app's main thread run in background would have led to the Windows Mobile-ization of the iPhone. Utter chaos and sluggish next-to-useless performance.

The ONLY limitation this scheme imposes is that you can't view the UI from more than one app at a time. There's too little screen real-estate on the iPhone for that, anyway. I can see them introducing home screen widgets at some point, but that's it. iPad might be a different case.

The app switcher in OS 4.0 does not allow you to "kill the application," because the application is not running when it is not in the foreground.

Depends on the app. An app that doesn't use any of the 7 background APIs is not doing anything and is just asleep. If it DOES use any of those APIs, it most certainly is running when not in the foreground. (At those points when the APIs give the app control via a callback.)

The only difference from what we are used to is that the interaction model between the OS and application is reversed during background processing. It doesn't make any practical difference for the end user.

It's unfortunate that there's so much confusion over this, because non-developers are trying to understand some fairly complex stuff. Any decent developer is going to "get it" immediately. It's up to the technical press now to clear this up, since Apple has done such a bad job of it. I hope my comments have helped.
 
As a developer, I took SJ's remark to mean something along the lines of an Activity Monitor/Process Watcher that you would use to monitor CPU & Memory consumption and kill poorly behaved tasks. I agree, the system, not the user should deal with that stuff.

Regarding the 'True or Faux' multitasking question, I don't think it really matters - in the end, the result is the same for the user. From the little I have read, OS 4.0, Android and Windows Phone 7 Series all are taking the same basic approach. All use specific OS level services which will continue to process an application created thread for things like streaming music, VOIP and so on. The 'rest' of the application has its state saved and is purged from memory when it is in the 'background'.

This saves immense amounts of memory and processor cycles compared to a full desktop OS implementation of multitasking.
 
In the case of things like IMs or Twitter, this is incorrect. None of the new background services allow for things like this. Someone specifically asked this question at the event yesterday and the answer was to continue using push notifications.

Yes, they do. The background services turn control over to the app from time to time and then the app can call most APIs (not just the 7) with some limitations (example: updating the UI).

The reason they said to continue to use push notifications is because that is what they would PREFER that you do. And I wouldn't be surprised if they would disapprove apps that try to do background processing when a push notification would do the job instead.

Twitter, IM, etc. No Go.

Download a queue of data that the user previously scheduled using the app's UI? No problem.

The 7 APIs don't know what you want to do with the data. They HAVE to hand control back to the app to process the data. And they have no knowledge, for example, of any higher-level protocol your app might be using during interaction with a server. And the OS doesn't have unlimited storage to hold your data until the user switches back to the app's UI.

Trust me, the background processing is a lot less limited than some are making it out to be.
 
The app switcher in OS 4.0 does not allow you to "kill the application," because the application is not running when it is not in the foreground.

The point of Jobs' quote is that you will never need to use a task manager to free up resources. The system handles it all automatically.

My understanding is that a long-press on the app icon in app switcher will cause a (x) to appear on the apps there. Pressing (x) will remove the app (close it normally).

I haven't tried this, but I believe on low memory conditions, the least recently used app may be sent a request to shutdown.

...
{snip}

Trust me, the background processing is a lot less limited than some are making it out to be.

I agree. As a developer, Apple seems to have given me all the tools I need to make my app operate in the background, much like the built in apps.

There are two approaches to multitasking that are commonly used in mobile devices.

One is to put the burden entirely on the OS. (the apps are vaguely aware that they have been backgrounded.) This was used by early Windows CE operating systems and resulted in the usability issues, like needing to periodically open a task manager to shut down old apps.

The other forces more of the burden on the application. The app knows it's function, so it can decide - do I keep playing sound? (Pandora: yes, game: no).- do I keep location services running? Etc... The developer needs to add code to their app to handle these issues. The result is a much more mobile device friendly user experience.

Both are Real multitasking. Apple's choice of the latter fits their goal of putting user experience first.
 
The other forces more of the burden on the application. The app knows it's function, so it can decide - do I keep playing sound? (Pandora: yes, game: no).- do I keep location services running? Etc... The developer needs to add code to their app to handle these issues. The result is a much more mobile device friendly user experience.
Also as a developer this is a very difficult thing to program since the application and not the OS must decide how to allocate system wide resources. This is also why his model of multitasking failed so miserably on WinCE.

Either the developers are too lazy or not skilled enough to manage resources appropriately, resulting in poor system performance.

Even good dev such as SBSH struggled massively to get their apps to run efficiently in the background. I still remember a bug in their IMAP mail client that would kill the battery in about 1h if an IDLE session hung. Users would pull out their phone and the phone would be off with a dead battery.

Having the OS manage backgrounded tasks is a much better idea IMHO.

The nice thing about this scheme is that the dev writes the code once and then apple can set up different ways to handle the task. For example on the iPhone it can update every few minutes, but on a device like the iPad with a better battery, it can update every few seconds. The good thing is the dev doesn't have to code the app differently for each platform, because the OS handles resources available.

Another situation is when the battery goes below 20%. Apple could have the OS reduce how frequently tasks can make background requests to preserve battery. This is hard for each dev to code but easy for apple to implement as a system wide API.
 
I agree. As a developer, Apple seems to have given me all the tools I need to make my app operate in the background, much like the built in apps.

Do I get it wrong that your application will never we able to operate in the background in OS 4.0? The best it can do is to ask the OS to do something for it (like playing music) while the application itself is suspended. There is no true background tasks in OS 4.0 (except for those from Apple itself).
 
Do I get it wrong that your application will never we able to operate in the background in OS 4.0? The best it can do is to ask the OS to do something for it (like playing music) while the application itself is suspended. There is no true background tasks in OS 4.0 (except for those from Apple itself).

And what background task would you like to perform that's not in Apple's APIs? Can you elaborate?
 
But his comment about that a user shouldn't ever see a task manager is rhetoric.

Spot on. A transparent tactic to further brainwash consumers into thinking Apple's way is the only way.
-------
I want real multitasking on my devices. Multitasking as in being able to process multiple tasks at the same time.

Unless of course I missed the memo, which was that pausing has now been renamed to multitasking.
 
Spot on. A transparent tactic to further brainwash consumers into thinking Apple's way is the only way.
-------
I want real multitasking on my devices. Multitasking as in being able to process multiple tasks at the same time.

Unless of course I missed the memo, which was that pausing has now been renamed to multitasking.

Please explain to me what you're doing on your phone that will not work with Steve's version of Multitasking?

I'm serious. I want your reasoning for needing "real multitasking".

It's not brainwash and it's not the "only way". It's just the "best way" that Apple could come up with that would preserve battery life and keep the iPhone from slowing down.

Prove me wrong.
 
It's just the "best way" that Apple could come up with that would preserve battery life and keep the iPhone from slowing down.

I think they found a pretty elegant solution that does exactly this. 99% of the things people actually need to do are covered now. Most of the complaints before the announcement were about wanting to listen to Pandora while doing something else anyway. I think it's naysayers latching on and nitpicking when the actual end-user functionality won't be substantially different, but battery life will be better.
 
Spot on. A transparent tactic to further brainwash consumers into thinking Apple's way is the only way.
-------
I want real multitasking on my devices. Multitasking as in being able to process multiple tasks at the same time.

Unless of course I missed the memo, which was that pausing has now been renamed to multitasking.

After this comment I have to say: you have no idea of what multitask is.

That is real multitask, is just optimize. The OS will run only the process that you actually need in your background, and freeze what you NOT need.
If you want something that you not need to run in the bg just to consume battery and performance, well that is just not clever.
 
And what background task would you like to perform that's not in Apple's APIs? Can you elaborate?

Sure. For example, any remote desktop style application that connects to other computer and needs to stay operational in order to maintain connection. No help from OS here.
 
Sure. For example, any remote desktop style application that connects to other computer and needs to stay operational in order to maintain connection. No help from OS here.

Speaking of remote desktop. Didn't I read about hints from the 4.0 beta that there may be a screen sharing option coming soon natively? Along with an iChat client.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.