방명록
- [Swift] App Life Cycle2023년 06월 11일 13시 44분 52초에 업로드 된 글입니다.작성자: 이중엽
1. 개요
앱이 실행되고 종료되기 전까지 많은 상태가 존재한다.
그 상태는 무엇이 있고, 그 역할에 대해 알아보려고 한다.
애플 공식 개발 문서를 토대로 내가 이해한 내용을 정리했다.2. app life cycle이란?
기본적으로 IOS에서 App의 현재 상태에 따라 무엇을 할 수 있고 할 수 없는지 결정된다.
UIKit은 적절한 delegate 객체의 메소드를 호출하여 앱의 상태가 변한 것을 알려준다. 이렇듯 각 상태 별 적절한 조치를 취할 수 있도록 만들어진 것이 App Life Cycle 개념이다.
IOS 12 이 전 버전에서는 UIApplicationDelegate 객체를 통해 Life Cycle 이벤트에 대응한다.
IOS 13 이 후 버전에서는 다중 창(multi-window)과 멀티캐스팅에 대응하기 위하여 scene을 기반으로 UIScenceDelegate 객체를 통해 Life Cycle 이벤트에 대응한다.
App Delegate에서 담당하던 모든 처리를 Scene Delegate로 분리되었을 뿐 App Life Cycle 자체는 동일하다.
3. app life cycle state 종류
- unattached - scence이 앱에 아직 연결되지 않은 상태
- foreground Inactive - app이 실행중이지만, scene이 아무런 event를 받을 수 없는 상태
- foreground Active - app이 실해중이고, scene에서 event를 받고 있는 상태
- background - app이 background에서는 실행 중이지만, 화면 상에 나타나지는 않은 상태
- suspended - app의 관련 데이터를 메모리에만 올려둔 상태로, background에 진입하여 아무런 동작을 하지 않는다면 suspended 상태가 된다. 메모리가 부족하면 suspended 상태의 앱은 메모리에서 가장 먼저 해제된다.
4. Application Delegate method & Scene Delegate method
// 1. 앱 실행 후 모든 설정이 완료된 뒤 호출 application(_:didFinishLaunchingWithOptions:) // 2. 앱 delegate에 scene이 추가되었음을 알려줌 scene(_:willConnectTo:options:) // 3. 앱이 background에서 foreground로 변환 될 때 호출 // (background -> foreground.inactive) sceneWillEnterForeground(_:) // 4. 앱이 inactive에서 active 상태로 변경될 때 호출 // (foreground.inactive -> foreground.active) sceneDidBecomeActive(_:) // 5. 앱이 active에서 inactive 상태로 변경될 때 호출 // (foreground.active -> foreground.inactive) sceneWillResignActive(_:) // 6. 앱이 background로 진입했을 때 호출 sceneDidEnterBackground(_:) // 7. 앱이 시스템에 의해 종료될 때, UIKit에 연결된 Scene을 해제해달라고 요청 할 때 호출 sceneDidDisconnect(_:)
5. 참고문헌
Apple 공식 개발자 문서
Apple 공식 개발자 문서 - Managing your app’s life cycle
Apple 공식 개발자 문서 - UIScene.ActivationState
velog - rnfxl92
tistory - 유정주'Swift' 카테고리의 다른 글
[Swift] View Life Cycle (0) 2023.06.11 [Swift] 고차함수 (0) 2023.06.11 [Swift] 값타입과 참조타입 차이점 (2) 2022.08.17 다음글이 없습니다.이전글이 없습니다.댓글