Which is the proper delegate to implement when an application is waking up from being in the background and you want it to prep it to be active?
applicationWillEnterForeground vs applicationDidBecomeActive -- What's the difference?
Which is the proper delegate to implement for when an application is going to sleep and you want to prep it to cleanup and save data?
applicationWillResignActive vs. applicationDidEnterBackground -- What's the difference?
Also, I've noticed that applicationWillResignActive gets called when an incoming SMS or call comes in but the user chooses to click Ok and continue. I don't want my app to take any action in these cases. I just want it to keep running without any intermediate cleanup since the user didn't exit the app. So, I would think it makes more sense to do cleanup work just in applicationDidEnterBackground.
I would appreciate your input on best practices to follow on choosing which delegates to implement for waking up and going to sleep as well as considering events like being interrupted by SMS/calls.
Thanks
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:
applicationDidBecomeActive:
applicationDidBecomeActive:
is called:
application:didFinishLaunchingWithOptions:
applicationWillEnterForeground:
if there's no URL to handle.application:handleOpenURL:
is called.applicationWillResignActive:
if user ignores interruption like a phone call or SMS.applicationWillResignActive:
is called:
applicationDidEnterBackground:
is called.applicationDidBecomeActive:
is called.applicationDidEnterBackground:
is called:
applicationWillResignActive:
beginBackgroundTaskWithExpirationHandler: