Question

I have an app (a game) which saves data: game state, high scores, achievements, etc. Currently the app delegate does this on applicationWillTerminate:. After playing around with iPhone 4 for a bit, it seems that applications pretty much never terminate: they just run in the background forever, unless the user goes out of their way to quit them, or restart the phone.

So my question is, should I find another place to save my data, and if so, when?

Was it helpful?

Solution

To minimize the amount of time spent in the delegate method call, you should find a place that makes sense to save during the game (level completion, checkpoints, etc). You can also add a new delegate method to your application delegate which will be called when your application transitions to the background where you can duplicate some of the things you may have done previously in applicationWillTerminate:. The new delegate method to implement is -applicationDidEnterBackground:.

You will also receive a notification that the user switched back to your app as applicationWillEnterForeground:.

OTHER TIPS

you can do so in the views diddisappear delegate method

-(void)viewDidDisappear:(BOOL)animated

{

//CODE FOR SAVING

}

There are 2 App delegate methods you can use

applicationDidResignActive: //pausing the app, used when a msg comes up. if multitasking this wont help

applicationDidEnterBackground: // called in iOS 4 for when the app is in the background

you can see when it loads into the foreground using

applicationWillEnterForeground:

check out the reference for more info

You should save in applicationDidEnterBackground. Make sure to wrap your saving code with – beginBackgroundTaskWithExpirationHandler: and endBackgroundTask, since without that, you have less than a second (or something like that) before execution suspends.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top