What are the common execution iOS Application Lifecycle?

In this article, you will learn about the different execution states of an iOS application. Based on the current state, you can decide what task you want to perform. There are different states that an app might have.

The iPhone operating system (iOS) provides us with different five states of an application like the following −

  • Not running

  • Inactive

  • Active

  • Background

  • Suspended

An iOS application runs in several states, known as states of the application life cycle. App life cycles are crucial for iOS developers, as they help them understand how their apps behave. The following states are passed through by every iOS application.

  • Not Running − As the name clearly indicates, the application is not currently operational. It means there is no process executing in the application. If the application was terminated by the operating system, it switches to the not running state.

  • Inactive − When an application is in foreground mode but is not taking any events. It means the application is open but is not receiving any inputs. This might happen for some reasons such as you are currently on a phone call or you received a message. In this state, the operating system does not allow us to interact with the app.

  • Active − This is the most common state in which an application is in foreground mode. In this state, the application responds to all events.

  • Background − As the name clearly indicates, the application is unable to interact. When you switch from one app to another, the first app will transition into background mode. When the application is in the background, it might be suspended by the operating system itself. This is true that you can execute code in background mode as well but for a limited time period.

  • Suspended − The application can be suspended if it is running in the background but not performing any tasks. In that case, the operating system will analyze the application usage and will terminate it if found required.

For iOS applications, UIApplicationDelegate is the main entry point and executes when you build and run your application. This protocol provides a set of default methods associated with it. These methods help us to identify the current state of an application.

It is very significant for an iOS developer to understand the usage of these methods.

When the app starts running, certain methods in the UIApplicationDelegate are notified. Following are the methods available in UIApplicationDelegate.

  • application didFinishLaunchingWithOptions:-> Bool − This method is called when an application is launched for the first time. We can perform the initial setup for the application in this method like Firebase configuration, push notification and location access permission, library setup, etc. The same method is used to set up our first window to load.

  • applicationWillEnterForeground − When the app comes into foreground mode from background mode, this method gets executed. In this method, you can perform some actions such as animation continue, resume a task, resume a downloading process, etc.

  • applicationDidBecomeActive − This method is used to perform tasks such as theme updates when the app becomes active and is in foreground mode currently.

  • applicationWillResignActive − This will notify you when your application is about to become inactive. The application will not go to background mode and stay on the screen in inactive mode. This might happen if you receive a phone call, etc.

  • applicationDidEnterBackground − If the application enters the background for any reason, this method notifies you to perform the specified actions, such as pause animations, pause sync, or stop any heavy operations that are no longer required.

  • applicationWillTerminate − If the application is about to be terminated or killed from memory by the operating system, this method will notify you to perform any final cleanup in the code.

In the didFinishLaunchingWithOptions method, we can place the code that runs on app launch. When a user is required to log in to use an application, we can check UserDefaults to see if the user has already signed in to the app. Once logged in, the user can navigate to the home screen. Otherwise, the user can navigate to the login screen.

@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { /* 1. Override this function to perform the tasks that need to be performed on app launch. 2. Set up Firebase configuration, library configuration, app theme, etc. */ return true } func applicationWillResignActive(_ application: UIApplication) { /* You can pause ongoing processes like timers, animation, graphics, location access, etc. */ } func applicationDidEnterBackground(_ application: UIApplication) { /* You can invalidate running timers, save critical information of an user, released shared resources, etc. */ } func applicationWillEnterForeground(_ application: UIApplication) { // Resume the actions that are paused in background mode. } func applicationDidBecomeActive(_ application: UIApplication) { // You can refresh the user interface, restarting the actions that were paused when the app goes in inactive mode. } func applicationWillTerminate(_ application: UIApplication) { // You can save critical information in the app. } }


When you open an app on your mobile device, a lot of things happen. The iOS operating system is one of the most intuitive and user-friendly operating systems available. An understanding of the lifecycle of a mobile application is essential to successfully manage any type of app. An experienced developer will be able to take advantage of the power of a lifecycle.