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: