When waking up i.e. relaunching an app (either through springboard, app switching or URL)applicationWillEnterForeground:
is called. It is only executed once when the app becomes ready for use, after being put into the background, while applicationDidBecomeActive:
may be called multiple times after launch. This makes applicationWillEnterForeground:
ideal for setup that needs to occur just once after relaunch.
applicationWillEnterForeground:
is called:
- when app is relaunched(Notice that applicationWillEnterForeground will not be called in the first launch.)
- before
applicationDidBecomeActive:
applicationDidBecomeActive:
is called:
- when app is first launched after
application:didFinishLaunchingWithOptions:
- after
applicationWillEnterForeground:
if there's no URL to handle. - after
application:handleOpenURL:
is called. - after
applicationWillResignActive:
if user ignores interruption like a phone call or SMS.
applicationWillResignActive:
is called:
- when there is an interruption like a phone call.
- if user takes call
applicationDidEnterBackground:
is called. - if user ignores call
applicationDidBecomeActive:
is called.
- if user takes call
- when the home button is pressed or user switches apps.
- docs say you should
- pause ongoing tasks
- disable timers
- pause a game
- reduce OpenGL frame rates
applicationDidEnterBackground:
is called:
- after
applicationWillResignActive:
- docs say you should:
- release shared resources
- save user data
- invalidate timers
- save app state so you can restore it if app is terminated.
- disable UI updates
- you have 5 seconds to do what you need to and return the method
- if you dont return within ~5 seconds the app is terminated.
- you can ask for more time with
beginBackgroundTaskWithExpirationHandler: