Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
I'll welcome multitasking, but personally I think the iPhone notification system is the biggest issue they need to fix in OS 4.0! Anyone agree?

It's pretty bad.

App launcher, notification collection and presentation, and multitasking all need to be revamped/added, and the iPhone will be pretty hard to beat.
 
It's pretty bad.

App launcher, notification collection and presentation, and multitasking all need to be revamped/added, and the iPhone will be pretty hard to beat.

Ah an interesting conversation. I'm wondering - what do you see wrong with the current notification system. I see some of the Apps using it in annoying ways - but I wasn't aware of a design flaw in the notification system itself. Care to elaborate?
 
I don't believe this is correct - is any background task ever truly "idle?"

Sounds great in theory, falls apart in practice.

Yes, mostly. The iphone sdk already sends a message to inform apps they are no longer in the foreground - this currently corresponds to the user hitting the power button to turn off the phone (or the phone turning itself off). At that point, you are supposed to respond to the message by disabling timers. That pretty much completely idles your app. Not everyone does this, however. Often you can tell because the app continues to play sounds when the phone is "off."
 
Ah an interesting conversation. I'm wondering - what do you see wrong with the current notification system. I see some of the Apps using it in annoying ways - but I wasn't aware of a design flaw in the notification system itself. Care to elaborate?

The fact that you can only see one at a time, and that they are modal and interrupt what you are doing. If you dismiss them to get them out of the way, you can't go back and find them again to go deal with them.

It would be better to, for example, flash the status bar, have a popup that disappears after a second or two, and then you perform some gesture (drag the status bar down, for example) and you can see all your notifications all queued up in one place.
 
Ah an interesting conversation. I'm wondering - what do you see wrong with the current notification system. I see some of the Apps using it in annoying ways - but I wasn't aware of a design flaw in the notification system itself. Care to elaborate?

Take a look at what Palm did with WebOS and it's notification system. The iPhone is way behind in this. Part of this has to do with the multitasking situation.

Example, the iPhone will alert you of a SMS message that came in while you are in a 3rd Party app. Right now if I want to reply to that message I have to leave that app and relaunch it once I finish replying. Also, if I receive a SMS alert and then someone else sends me another SMS message the most recent will display but not the first one. Notification right all over each other.
 
As for apps actually running in the background, some examples are apps that watch for coded text messages to do certain things. Or automatically change wallpapers to match the weather. More commonly, background apps that watch your location and change the phone profile automatically.

Those are all extremely contrived examples. It doesn't mean you're wrong necessarily, just that those examples kinda stink.

Plus, every one of those examples would be very badly implemented as an always-running background task. Those are all notification-subscription use cases. In the first case, the SMS service would have a subscription service, and your app would subscribe to receive notifications of incoming messages. And this would never happen, obviously, for privacy reasons. Letting an app read all my text messages? No chance whatsoever.

Generally, it seems like at least a few people think that having continuously running applications that constantly poll for new events to respond to is a good idea. Those people, respectfully, are mistaken.

Lots of things that the iPhone cannot do, and other phones can.

That's another point that seems to be tripping people up. "Device X can do operation Y and yours cannot" is a totally non-compelling argument. In order for that to matter to anybody, anywhere, Y would have to be a thing that people actually care about — change the screen to match the weather? really? — and the implementation of Y in question has to be a good one. Some other thing having some other feature doesn't convince anybody, if that feature is dumb or worthless or the implementation of it stinks.

As for general multitasking, I can easily run ten or more apps (I think someone got to 50 in a test of a Pre Plus with more memory) on my wife's Palm Pixi. And just as easily manage them.

Every time somebody says that it makes me roll my eyes. It's a phone. If you need to run fifty apps at once, then you're doing something very wrong.
 
They can. There are already iPhone apps which do this. Tweetie, just to name one example of an app I just used not ten seconds ago which does this.

The capability is there. Some apps don't do it? Those apps could stand to be improved. But what's Apple supposed to do? Reject all apps from the App Store which don't implement this totally standard, built-in, right-there-in-the-API feature?

You missed my point. Devs shouldn't have to worry about it. That feature is a hack to get around the task switching limitation. Can you imagine if windowed oses worked like that? Lose data by switiching window focus, because a dev decided not to utilize some API?
 
You missed my point. Devs shouldn't have to worry about it.

How is the OS supposed to magically know how to serialize and restore an app's running state? Is it supposed to just dump the entire virtual memory space of the app to flash memory? What happens when there's not sufficient flash memory for that? Because, y'know, there won't be.
 
Apple plans to deliver a multi-tasking manager that leverages interface technology already bundled with its Mac OS X operating system

This part tells me this rumor is probably false. This probably refers to the Mac OS X Activity Monitor, which is exactly the kind of complex (for the average user) thing Apple is moving away from with iPhone OS. They will eventually have to deliver some form of multitasking, on some level, but I just don't see them going down this road.
 
How is the OS supposed to magically know how to serialize and restore an app's running state? Is it supposed to just dump the entire virtual memory space of the app to flash memory? What happens when there's not sufficient flash memory for that? Because, y'know, there won't be.

It doesn't. It's called task switching. Knows nothing about how the application works. It suspends execution and resumes it when you switch back. Operating Systems 101. Remember, iPhone OS already knows how to do this.

Memory issues are memory issues. Happens on the Mac too. You're still able to actually quit an app.
 
It doesn't. It's called task switching. Knows nothing about how the application works. It suspends execution and resumes it when you switch back. Operating Systems 101. Remember, iPhone OS already knows how to do this.

Memory issues are memory issues. Happens on the Mac too. You're still able to actually quit an app.

I'm pretty sure you're not grokking his point, but I'll let him speak for himself.
 
I don't believe this is correct - is any background task ever truly "idle?"

Sounds great in theory, falls apart in practice.

If the scheduler is set up that way, then yes, they can be truly idle. It's always under the scheduler's control. If it wants to give every process an equal slice of time, it can. Or, it can assign priority to more important tasks. Or, it can relegate it completely to the background, and it will just sit there.

This is how the MS-DOS DOSSHELL task swapper worked, and how the original "Switcher" for the 512k Macintosh worked.
 
I'm pretty sure you're not grokking his point, but I'll let him speak for himself.

I think i get his point. He thinks that something special needs to be done to preserve application state when switching tasks. I'm saying there isn't. It's fundamental to the BSD Unix core running the iPhone.

There are of course memory issues to contend with. This is why multitasking on the iPhone will need a carefully thought out interface that will manage how we switch between apps and quit apps.

The API provided for preserving state still remains useful - it lets an application resume a previous state on *startup*. That's an important distinction. But it is no replacement for ordinary task switching behavior. You no more want a developer to have to affirmatively support task switching than you would want them to have to remember to write code to make sure the Home button responds when their app is running.
 
I'm pretty sure you're not grokking his point, but I'll let him speak for himself.

Naw, I really don't know what to say to that. If somebody wants to pretend that the iPhone is a laptop, that's fine by me. It's like somebody walked into a creative meeting for a TV commercial and started pitching feature-length ideas. Whether the ideas are based in sense or not is pretty irrelevant, considering we're making a commercial here.

I think the discussion that guy wants is down the hall.
 
I think i get his point. He thinks that something special needs to be done to preserve application state when switching tasks. I'm saying there isn't. It's fundamental to the BSD Unix core running the iPhone.

There are of course memory issues to contend with. This is why multitasking on the iPhone will need a carefully thought out interface that will manage how we switch between apps and quit apps.

Is traditional task-switching really what we're talking about here? I'd suggest not, because again there must be safeguards against an app not just consuming memory but also processing cycles (whether on the "CPU" or other chipsets on the phone)--and thus draining battery and slowing down other running app, *especially* games--inappropriately. The problem of task-switching in a GUI on an embedded device is very, very different from traditional *nix considerations. Backgrounding isn't enough, and backgrounding + nice probably isn't enough either. ;)
 
If the scheduler is set up that way, then yes, they can be truly idle. It's always under the scheduler's control. If it wants to give every process an equal slice of time, it can. Or, it can assign priority to more important tasks. Or, it can relegate it completely to the background, and it will just sit there.

This is how the MS-DOS DOSSHELL task swapper worked, and how the original "Switcher" for the 512k Macintosh worked.

How is the scheduler going to know how to prioritize 140k third-party apps? Are you familiar with how it works on modern "pre-eptive multitasking" systems?
 
I dunno, man. Mine's an original iPhone, the now-extinct 4 GB model, and I just tried it with Mail and Safari as I described above. It was as fast as I am. If it went faster, the phone would be waiting on me.

You are able to move quickly between mail and safari because they both are native apps that are running in the background. Everything is so much faster when you are able to do that between all the apps.

I was leery about jailbreaking but I just did last week since my warranty was up and I wanted to see what it was all about. I didn’t really feel that strongly about mult-tasking until I had it. Now I love it. So much easier to do things like:

Copy info from an email into a contact and or calendar entry and vise versa

Go back to a game after being interrupted by a text message or phone call without having to go through a full minute of multiple option screens to get back to it

Switch easily back and forth between Tap & Track and FitPhone apps to check and compare info and results

Switch between multiple chat conversations that I have going simultaneously in WhosHere, Loopt Mix and Grindr without having to continually open and close each app every time I get a response – not to mention I love leaving Grindr running in the background while I check mail, browse Safari, text, whatever. I seem to be getting more potential dates that way :)

Use other apps while I’m waiting for a podcasts to download. Before, if I switched into another app, the podcast would stop downloading and I would have to go back and start all over again.

Oh yeah, and there’s the listening to streaming music thing.

I’m sure there have been other instances, but those are the ones I use multitasking for the most so far in the whole week that I’ve had it. It’s made me fall in love with my phone all over again.

And the interface (with Backgrounder and QuickDo) is so fun and easy to use. You can always see which apps are running in the background since they all have little black circles by their icons, and if you want to close one, you just touch the bar at the bottom of the screen, all the background apps pop to the front and you toss the one you want to close off the screen. And if one regularly runs in the background that you don’t want to, you just go to the settings page and turn the background option for that app off. (When you first get Backgrounder, you chose which apps you want to give permission to work in the background, but you can change these at any time.) It’s all very simple and it makes switching from one app to another lightening fast. It really does make a big difference and I hope my iphone can do it in the future with whatever new versions come out without me having to jailbreak it again.
 
I'd suggest not, because again there must be safeguards against an app not just consuming memory but also processing cycles…

Don't forget the security model. Just a trivial example: Apps on the iPhone have access to Core Location. Safeguards have to be in place to keep an app from surreptitiously reporting the phone's location without express permission. That's why the OS pops up a confirmation alert whenever an app requests access to Core Location for the first time.

Phones are not laptops. iPods are not laptops. iPads are not laptops. They have different requirements, and consequently different design choices. Just sticking your fingers in your ears and pretending none of those factors exist isn't a good way to contribute to an ongoing discussion, even if it's as ultimately pointless as this one.

You are able to move quickly between mail and safari because they both are native apps that are running in the background.

Sorry, that's not correct. Mail does have some extremely limited background components for push services, but Safari absolutely does not.

It’s all very simple…

Dude, I'm a reasonably bright guy with a lot of computer-type experience under my belt, and even my eyes glazed over a third of the way into your description. It's a phone. What you described is an appallingly bad user experience for a phone. The design goal is for the owner of the phone to be totally unaware that he's interacting with a device at all, as far as that's possible given the limits of, like, physics and stuff.

You need to understand that just saying the words "running application" to a typical person is enough to turn them off.
 
Naw, I really don't know what to say to that. If somebody wants to pretend that the iPhone is a laptop, that's fine by me. It's like somebody walked into a creative meeting for a TV commercial and started pitching feature-length ideas. Whether the ideas are based in sense or not is pretty irrelevant, considering we're making a commercial here.

I think the discussion that guy wants is down the hall.

Right. Supporting the crazy notion that operating system tasks should be left to the operating system - that's just crazy, right?

Here's another idea - let's jettison the Cocoa Touch widgets and require developers to write all their own code for buttons, sliders, etc.

It's called "code reuse", "inheritance", and "object oriented design". I know I must not be getting my point across very clearly, but I didn't invent any of these things, and they really are considered best practices in the software world. Without them, your computing experiences would be total nightmares.
 
It's called "code reuse", "inheritance", and "object oriented design". I know I must not be getting my point across very clearly, but I didn't invent any of these things, and they really are considered best practices in the software world. Without them, your computing experiences would be total nightmares.

Heh. There are a lot of compelling arguments against inheritance and object oriented design.

They have their place, but their place is not everywhere.
 
I don't believe this is correct - is any background task ever truly "idle?"

Sure. Most modern OS's are set up so that when a task is waiting for, say an input event, it gets no cpu time.

Those are all extremely contrived examples. It doesn't mean you're wrong necessarily, just that those examples kinda stink.

They're all _real_ examples, not contrived.

Plus, every one of those examples would be very badly implemented as an always-running background task. Those are all notification-subscription use cases.

No, they're not. Notification can be a waste of bandwidth, radio power and servers in many cases.

And impossible to do in the case of GPS locations, unless you have a server and pay ATT to watch where you are all the time. And even that won't work if you're out of ATT range.

And this would never happen, obviously, for privacy reasons. Letting an app read all my text messages? No chance whatsoever.

Again, these are apps that have been available for almost a decade on other phones.

For example, there are background apps that watch specially tagged text messages for a secret code you've set up. When it sees one, it sends back the location of the device so you can track it down if lost. Or lock it or wipe it. Or even retrieve your contacts remotely if you forgot your phone. No need to pay someone $99 a year for something so simple.

Or prevent bothering you with alerts unless certain friends text you, so others can't see the popups. Just one of many such examples.

Generally, it seems like at least a few people think that having continuously running applications that constantly poll for new events to respond to is a good idea. Those people, respectfully, are mistaken.

Those people sound like they've used other phones and know what they're missing with the iPhone.

Y would have to be a thing that people actually care about — change the screen to match the weather? really?

Yes, really.

Even Apple has been applying for patents to change your homescreen and visible menu options depending upon your location.

Are you saying that Apple doesn't know what people care about? Are you saying that Apple has dumb ideas?

Just because Apple doesn't allow third party apps to do these things that other phones allow, doesn't mean they're bad ideas.

Every time somebody says that it makes me roll my eyes. It's a phone. If you need to run fifty apps at once, then you're doing something very wrong.

You missed the point, which is that memory to hold idle tasks is not an issue in most cases.

How is the OS supposed to magically know how to serialize and restore an app's running state? Is it supposed to just dump the entire virtual memory space of the app to flash memory? What happens when there's not sufficient flash memory for that? Because, y'know, there won't be.

If I understand your question, in modern phone OS's apps get an event that tells them they need to save state and shut down.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.