iOS applications are all about cycles
This is because the iOS applications are richly interactive when it comes to user input and much of your programming with UIKit will be delegate oriented. Knowing the many different “cycles” of the device and application will be illuminating for your development.
States of the UIKit App Cycle
* These are the execution states of a UIKit app from the Apple docs. But why so many arrows? Below is the simplified flow charts
User Action: Your app has not been launched
Your application starts off Current State: Not Running
User Action: Your app is launched
Delegate method called: application(_:didFinishLaunchingWithOptions:)
New state: Inactive
– your application is briefly here as it prepares a successful launch
New state: Active
– your application is now the “foreground app”.
Many apps will place a majority of the app setup logic in this function including setting up a programmatic view controller setup (bypassing the default storyboard)
Delegate method called: applicationDidBecomeActive
User Action: User goes to home screen or opens another app
Current state: Active
Delegate method called: applicationWillResignActive
New state: Inactive
– your application is briefly here
New state: Background
– your app is available in the app picker screen on home button double tap
Delegate method called: applicationDidEnterBackground
*
* If your app does not support background execution “applicationWillTerminate” is called
** If your iOS device is low on memory, it may suspend and even terminate your app back to the state “Not Running”
User Action: User reopens a background app
Current state: Background
Delegate method called: applicationWillEnterForeground
New state: Active
Delegate method called: applicationDidBecomeActive
TLDR: Your basic UIKit flow moves from Active <-> Background
These are only the basic lifecycle events for your UIKit app, there are MANY different scenarios that can change the state of your app – the device can span a low battery warning and show the power saving alert, a phone call may occur, users can click and hold notifications, the device can run out of batteries.