Intro
앱의 생명 주기(App Life Cycle)란?
앱의 생명 주기는 어떠한 앱이 최초로 실행된 이후부터 해당 애플리케이션이 메모리에서 해제되어 종료되기까지의 상태와 상태 간의 이동을 의미한다.
앱 생명주기의 변화점
iOS 13.0+ & iPadOS의 스플릿 뷰
기존에는 한번에 하나의 화면만 보여주던 게 당연했지만, 아이패드에서 최소 두 개 이상의 앱을 하나의 화면에서 보여주어야 할 필요성이 생겼다. 그것이 바로 스플릿 뷰의 등장이다.
App Delegate → Scene Delegate
- iOS 12 이전까지는 UIApplicationDelegate 객체를 통해 Life Cycle Event에 대응했지만,
- iOS 13 이후부터는 UISceneDelegate 객체를 통해 Life Cycle Event에 대응한다.
Session Life Cycle의 추가
무슨 차이일까?
window(창) 에서 scene으로
- 하나의 화면에서 여러 창을 띄울 수 있다 → 하나의 앱을 동시에 킬 수도 있다
앱의 생명 주기 흐름 (iOS 13.0+)
앱의 실행 상태 | 정의 | ||
Unattached | 메모리 위에 적재되지 않은 상태 | ||
Foreground | 화면 점유 상태, 리소스를 우선적으로 사용 | ||
Inactive | 임시 비활성화 (by 전화, 알람과 같은 인터럽트 등) → 화면을 점유하지만 앱의 동작을 사용자가 모두 통제할 수 없다 | ||
Active | 앱이 실행되어 이벤트를 받을 수 있는 상태 | ||
Background | 사용자 위치나 음악 재생처럼 Background에 있거나 스플릿 화면에서 화면을 점유해도 포커스가 되어 있지 않은 상태 | ||
Suspended | 앱이 일시적으로 중단된 상태 |
운영체제
프로세스의 상태와 비교
프로세스에 대한 상태(Process State)에 대해 공부한 적이 있는데, 메모리의 할당과 사용, 해제에 대해서 이와 유사한 점이 많았다.
다만, 앱에서는 백그라운드와 포그라운드에 대한 구분이 더 자세히 구분되어 있는 게 차이점이었다.
'iOS' 카테고리의 다른 글
iOS) Push Notification Flow (feat. APNs) (0) | 2024.05.08 |
---|
댓글