앱의 생명주기(iOS 13.0 이상 기준)
앱의 생명주기의 종류

- 생명주기란?
- 앱의 최초 실행부터 앱이 완전히 종료될 때까지 앱이 가지는 상태들과 그 상태들 사이의 전이를 뜻합니다.
- 앱의 생명주기란?
- 앱의 실행, 종료 및 앱이 Foreground, Background에 있을 때 시스템이 발생시키는 이벤트에 의해 앱의 상태가 변하는 일련의 과정을 뜻합니다.
- 앱의 상태 종류
- Not Running
- 앱이 실행되기 전의 상태입니다.
- Foreground(InActive)
- 앱이 화면에서 실행중이지만 어떠한 신호도 받지 않는 상태입니다.
- ex) 시스템 알람, 제어센터 내리기, App switching 등
- Foreground(Active)
- 앱이 화면에서 실행되고 있는 상태입니다.
- ex) 사용자가 직접 화면을 볼 수 있는 상태입니다.
- Background
- 앱이 화면에 보이진 않지만 코드를 실행하고 있는 상태입니다.
- Suspended
- 앱을 다시 실행했을 때 최근 작업을 빠르게 로드하기 위해 메모리에 관련 데이터만 저장되어 있는 상태입니다.
- 앱이 곧 종료될 상태(Suspend된 앱은 시간이 지나면 Not Running 상태로 바뀌게 됩니다.)
- Not Running
Scene의 연결 과정
1. 앱 실행
application(_: didFinishLaunchingWithOptions:)
- 앱이 실행되고 앱을 화면에 띄울 준비가 끝난 뒤 실제로 화면에 보여지기 전에 실행
2. Scene 연결
- UIKit에 Scene을 연결해주는 과정들
application(:configurationForConnecting: options: )
- 새로운 Scene 생성 + UIKit와 연결해주기 위해 configuration를 지정해줍니다.
scene(_:willConnectTo:options: )

- Scene이 연결될 것을 delegate에 알려줍니다.
- CodeBase로 UI를 짤 때 rootView를 설정해주는 곳입니다.
- StoryBoard를 사용하면 entry point를 찾아 UIWindow를 생성해줍니다.
sceneDidBecomeActive(_:)
- 앱이 Inactive -> Active 상태로 전환되었을 때 호출됩니다.
Scene의 연결 해제 과정
sceneDidDisconnected(_:)
- delegate에 UIKit에 연결된 Scene의 연결을 해제할 것을 요청합니다.
application(_: didDiscardSceneSessions:)
- 사용자가 멀티태스킹 창(app Switcher)에서 한 개 이상의 Scene을 종료시켰을 때 호출됩니다.
applicationWillTerminate(_:)
- 앱이 사용자에 의해 종료될 때 호출됩니다.
- 크래시 나거나 예기치 못한 상황에서 종료될 때는 호출되지 않습니다.
앱 실행후 홈 화면으로 나가면? 다시 앱으로 들어오면?
- 앱 실행 후 홈 화면으로 나갔을 때
- Active -> InActive -> Background -> (Suspended)
sceneWillResignActive(_:)
- Activate -> InActive 상태로 변할 때 실행됩니다.
sceneDidEnterBackground(_:)
- InActive -> Background 상태로 변할 때 실행됩니다.
- Background에 있는 앱을 다시 실행했을 때
- Background -> InActive -> Active
sceneWillEnterForeground(_:)
- Backgorund -> InActive 상태로 변할 때 실행됩니다.
sceneDidBecomeActive(_:)
- InActive -> Active 상태로 변할 때 실행됩니다.
'IS' 카테고리의 다른 글
iOS Swift - 접근제한자 (0) | 2023.03.21 |
---|---|
iOS Swift 공식 문서 Study - Property(프로퍼티) (0) | 2023.03.14 |
iOS Swift 공식 문서 Study - Class, Struct 구조체 (0) | 2023.03.09 |
iOS Swift - SocketIO(양방향 통신) (0) | 2023.02.28 |
iOS Swift - 개인 앱 출시 프로젝트 - FURY (0) | 2023.02.28 |