iOS

iOS 앱의 생명 주기 (App Life Cycle)

Dev.Andy 2024. 3. 27. 20:51

Intro

앱의 생명 주기(App Life Cycle)란?

앱의 생명 주기는 어떠한 앱이 최초로 실행된 이후부터 해당 애플리케이션이 메모리에서 해제되어 종료되기까지의 상태와 상태 간의 이동을 의미한다.

 

앱 생명주기의 변화점

iOS 13.0+ & iPadOS의 스플릿 뷰

기존에는 한번에 하나의 화면만 보여주던 게 당연했지만, 아이패드에서 최소 두 개 이상의 앱을 하나의 화면에서 보여주어야 할 필요성이 생겼다. 그것이 바로 스플릿 뷰의 등장이다.

App Delegate → Scene Delegate

  • iOS 12 이전까지는 UIApplicationDelegate 객체를 통해 Life Cycle Event에 대응했지만,
  • iOS 13 이후부터는 UISceneDelegate 객체를 통해 Life Cycle Event에 대응한다.

iOS 13.0 이후 SceneDelegate가 등장했다

Session Life Cycle의 추가

무슨 차이일까?

window(창) 에서 scene으로 

- 하나의 화면에서 여러 창을 띄울 수 있다 → 하나의 앱을 동시에 킬 수도 있다

 

앱의 생명 주기 흐름 (iOS 13.0+)

앱의 실행 상태 정의  
Unattached 메모리 위에 적재되지 않은 상태
Foreground 화면 점유 상태, 리소스를 우선적으로 사용
  Inactive 임시 비활성화 (by 전화, 알람과 같은 인터럽트 등) → 화면을 점유하지만 앱의 동작을 사용자가 모두 통제할 수 없다
  Active 앱이 실행되어 이벤트를 받을 수 있는 상태
Background 사용자 위치나 음악 재생처럼 Background에 있거나 스플릿 화면에서 화면을 점유해도 포커스가 되어 있지 않은 상태
Suspended 앱이 일시적으로 중단된 상태

 

운영체제

프로세스의 상태와 비교

프로세스에 대한 상태(Process State)에 대해 공부한 적이 있는데, 메모리의 할당과 사용, 해제에 대해서 이와 유사한 점이 많았다.

다만, 앱에서는 백그라운드와 포그라운드에 대한 구분이 더 자세히 구분되어 있는 게 차이점이었다.

프로세스에 대한 상태