Sam Shaikh
Sam Shaikh

Reputation: 1646

What method of AppDelegate will be called after entering into Suspended state?

My App goes in background, If I open again, It shows same page where I left it.

While, If iOS puts app into Suspended state, yet it is in memory. If I come back, which AppDelegate methods will be called.

Actually my purpose is to restore same screen from suspended to app, if it is not TERMINATED.

Last thing, Will didFinishLaunchWithOptions will be called if App is returning from SUSPENDED state.?

Thanks..

Upvotes: 5

Views: 4974

Answers (4)

Ketan Parmar
Ketan Parmar

Reputation: 27448

As Apple Documentation states,

  • application:willFinishLaunchingWithOptions:—This method is your app’s first chance to execute code at launch time.

  • application:didFinishLaunchingWithOptions:—This method allows you to perform any final initialization before your app is displayed to the user.

  • applicationDidBecomeActive:—Lets your app know that it is about to become the foreground app. Use this method for any last minute
    preparation.

  • applicationWillResignActive:—Lets you know that your app is transitioning away from being the foreground app. Use this method to
    put your app into a quiescent state.

  • applicationDidEnterBackground:—Lets you know that your app is now running in the background and may be suspended at any time.

  • applicationWillEnterForeground:—Lets you know that your app is moving out of the background and back into the foreground, but that it is not yet active.

  • applicationWillTerminate:—Lets you know that your app is being terminated. This method is not called if your app is suspended.

so applicationWillEnterForeground and applicationWillResignActive will be get called!

Upvotes: 8

Zaid Pathan
Zaid Pathan

Reputation: 16820

You can test it your self using breakpoints in AppDelegate file.

If user will click on Home button once, app is in suspended state. If user will click on Home button twice, app is in inactive state.

While user comes from suspended state to the app, I found following method calls.

first : applicationWillEnterForeground then applicationDidBecomeActive.

didFinishLaunchingWithOptions not called.

More details

Upvotes: 0

PlusInfosys
PlusInfosys

Reputation: 3436

Accoding to application's life cycle, Your app will not get any notification when ios will put your app in suspended mode. Whenever your app enters in background mode and if its not doing anything - not processing - ios will put it in suspended state. But when suspended and its still in memory, You don't really need to do anything to display same screen where your app was before. ios automatically keep the state of app. You need to manage this only if your app is getting terminate while in suspended mode ..i.e. not in memory.

If you don't have any execution in background with any of background execution method , you can consider app in suspended mode if you receive notification for applicationDidEnterBackground store state of your app somewhere and applicationWillEnterForeground you can display app with stored state.

or if you are executing some finite task in background, You can keep local variable and use that for keeping track of suspended or now. on applicationDidEnterBackground, variable = inBackground, when you task completed and variable == inBackground, set variable == inSuspended and also store state of your app somewhere. on applicationWillEnterForeground

 if  variable  == inSuspended
   {
    //Display app according to previously stored state.
   `variable  == inForgorund`,  
}

Upvotes: 1

Andrey Oshev
Andrey Oshev

Reputation: 855

- (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 invalidate graphics rendering callbacks. 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, this method is called instead of applicationWillTerminate: when the user quits.
}


- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}


- (void)applicationDidBecomeActive:(UIApplication *)application {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}


- (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}

didFinishLaunchWithOptions didnt call.

Upvotes: 1

Related Questions