views:

27

answers:

2

I have an iphone app, and I need to capture some data right as the app is about to close...

Is it possible to associate a method call with the clicking of the iphone home button? So that I can get the most recent and current data of a particular type that I can?

+3  A: 

There's a few callbacks that get sent to the application delegate depending on the type of "close".

- (void)applicationWillResignActive:(UIApplication *)application;

Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.

- (void)applicationDidEnterBackground:(UIApplication *)application;

Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. If your application supports background execution, called instead of applicationWillTerminate: when the user quits.

- (void)applicationWillTerminate:(UIApplication *)application;

Called when the application is about to terminate.

codenoob
Additional Note - these can all be registered for at NSNotificationCenter if you need to be alerted in something other than the appDelegate
Jbonniwell
A: 

The applicationWillResignActive delegate is a good place to save data before an app closes, but may be called when the app is only going to be temporarily interrupted, or stored in the background for an indeterminate period.

Under iOS 4.0 and later, applicationWillTerminate is not called, even if the app is about to be killed while in the background. So it's really only useful for some added iOS 3.x support.

hotpaw2