-
Notifications
You must be signed in to change notification settings - Fork 20
Open
Description
앱의 생명 주기 관리
앱이 포그라운드 또는 백그라운드에 있을 때 시스템 알림에 응답하고 기타 중요한 시스템 관련 이벤트를 처리
개요
- 앱의 현재 상태는 언제든지 할 수 있는 것과 할 수 없는 것을 결정하여야함.
- 포그라운드에서는 사용자의 주의를 끌기위한 것들이 이루어짐
- 백그라운드에서는 가능한 적은 작업을 수행하여야하며, 가급적이면 화면 밖에 있기 때문에 아무것도 안하는 것이 좋긴함.
- 앱의 상태가 변경되면 그에따라 동작을 조정해야함.
앱의 상태가 변경되면 UIKit은 적절한 대리자 개체의 메서드를 호출하여 알려준다.
- iOS 13이상 : UISceneDelegate Scene 기반 앱의 생명 주기 이벤트에 응답함.
- iOS 12 및 이전 버전 : UIApplicationDelegate 객체를 사용하여 생명 주기 이벤트에 응답함.
Scene 제공이 가능하려면, iOS는 13.0이상부터 지원하는 항상 scene delegate를 이용한다. iOS 12이하 버전에서는 app delegate를 이용한다.
- Scene이란 기기에서 실행되는 앱의 UI의 한 인스턴스를 나타냄
- 사용자는 각 앱에 대해 여러 장면을 만들고 별도로 표시하거나 숨길 수 있음.
- 각 Scene은 고유한 생명 주기가 있기 때문에 각각 다른 실행 상태에 있을 수 있다.
- 예를 들어, 한 장면은 전경에 있고 다른 장면은 배경에 있거나 일시 중단될 수 있다.
Scene support 은 Opt-in feature(선택 기능)이다. 기본 지원을 사용하고 싶다면, UIApplicationSceneManifest에 어떤 Support를 이용할 것인지에 관한 키를 Info.plist에 추가하면 된다.
Scene-Based Life Cycle (13.0 이상)
Unattached: 유저나 시스템이 새로운 화면을 앱에 요청하면, UIKit은 그화면을 생성하여 unattached 상태로 만든다.Foreground Inactive: 유저-요청된 화면은 화면에 띄워지기 전에 포그라운드로 옮겨짐.Foreground Active: 화면이 보여지는 상태.Background: 시스템-요청된 화면은 백그라운드로 옮겨짐. 예를들면 위치 이벤트 처리같은 것들.Suspended: 유저가 앱의 UI를 사라지게 하면 잠시 Suspended 상태가 된다.
App-Based Life Cycle (12.0 이하)
Not running: 유저나 시스템이 새로운 화면을 앱에 요청하면, UIKit은 그화면을 생성하여 unattached 상태로 만든다.Inactive: 잠시 화면이 내려간 상태Active: Foreground로 진입할 때, 앱을 자동으로 활성 상태로 전환함.Background: 시스템-요청된 화면은 백그라운드로 옮겨짐. 예를들면 위치 이벤트 처리같은 것들.Suspended: 유저가 앱의 UI를 사라지게 하면 Suspended 상태가 된다.

