-
[iOS] Life Cycle (App, Scene 생명 주기)스위프트 2023. 7. 30. 17:37
Overview
앱에는 생명주기가 있습니다.
앱이 열리고, 실행되고 그리고 백그라운드가 되고 종료가 됩니다.
앱이 Foreground 상태에가 당연히 Background 상태보다 리소스를 많이 사용하겠죠?
iOS는 13버전 전과 후로 생명 주기에 변화가 있습니다.
- iOS 13 이전, 앱은 하나의 화면만을 책임졌습니다.
- UIApplicationDelegate를 통해 생명 주기 이벤트를 다뤘습니다.
- iOS 13 그리고 그 이후, 앱은 하나의 화면이 아닌 여러 화면을 다뤄야 했습니다.
- UISceneDelegate를 통해 생명 주기 이벤트를 다뤘습니다.
App State
앱은 각각의 상태가 있습니다. 위에서 언급한 것 처럼 실행, 종료 등 상태가 있습니다.
App State 설명 Not Running 앱이(사용자 또는 시스템에 의해) 실행되지 않거나 종료된 상태 Active 앱이 Foreground에서 실행중이며 이벤트를 받는 상태
Active 상태에서는 사용자의 이벤트(터치 등)에 반응을 해야 함Inactive 앱이 Foreground에서 실행중이나 터치 이벤트를 받지 않는 상태
(이 상태는 다른 코드를 실행하고 있을 수 있음)
보통 상태가 변경될 때 잠시 Inactive 상태가 됨Background 앱이 실행중이나 화면에 노출되지 않는 상태
사용자가 앱을 종료하면 시스템이 Suspended 상태로 가기 전에 잠시 Background 상태가 됨Suspended 앱이 메모리에 올라가 있지만 실행중이지 않은 상태
시스템은 Background 상태이며 대기 중인 작업이 없는 앱을 언제든지 Suspended 상태로 만들고 언제든지 제거할 수 있음 (다른 앱을 위한 공간 확보)App-based Life Cycle (iOS 13 미만)
Scene-based Life Cycle
- 사용자 또는 시스템이 새로운 Scene을 요청하면 UIKit은 Scene을 생성하고 Unattached 상태로 만듭니다.
- 사용자가 요청한 Scene는 빠르게 Foreground로 이동합니다. (스크린에 나타남)
- 시스템이 요청한 Scene는 Backogrund로 이동하여 이벤트를 Process 할 수 있게 됩니다.
- 예를 들어, 위치 서비스를 위해 시스템이 Background에 Scene를 실행할 수 있음
- 사용자가 앱을 종료(Dismiss) 하면, UIKit은 연관된 Scene를 Background 상태로 만들고 결국 Suspended 상태가 됩니다.
- UIKit은 언제든 Background 또는 Suspended 상태인 Scene를 Unattached 상태로 만들 수 있습니다. (자원 확보)
참고
https://developer.apple.com/documentation/uikit/app_and_environment/managing_your_app_s_life_cycle
'스위프트' 카테고리의 다른 글
[iOS] ViewController Life Cycle (+ ViewIsAppearing) (0) 2023.09.02 [iOS] RxSwift를 이용하여 키보드 컨트롤하기 (NotificationCenter) (0) 2023.08.22 [Swift] 티스토리 블로그를 자동으로 Github에 업데이트 (Git Actions) (6) 2023.08.07 [iOS] UITextField를 RxDelegateProxy를 이용하여 사용해보자 (0) 2023.07.29 RxSwift KeyBoard (RxKeyBoard) 간단한 사용법 (0) 2021.10.07 - iOS 13 이전, 앱은 하나의 화면만을 책임졌습니다.