# 0615 활동학습(App Life cycle) ### Q. iOS 13에서 Scene Delegate로 이관된 App Delegate의 역할은 무엇무엇이 있을까요? - UI의 상태를 알 수 있는 App LifeCycle과 관련된 부분 - willEnterForeGround - didEnterBackground - willResignActive - didBecomeActive ### Q. - App Delegate와 Scene Delegate의 각각의 역할은 무엇일까요? - App Delegate - 앱의 가장 중요한 데이터 구조를 초기화하는 것 - 앱의 scene을 환경설정(Configuration)하는 것 - 앱 밖에서 발생한 알림(배터리 부족, 다운로드 완료 등)에 대응하는 것 - 특정한 scenes, views, view controllers에 한정되지 않고 앱 자체를 타겟하는 이벤트에 대응하는 것. - 애플 푸쉬 알림 서브스와 같이 실행시 요구되는 모든 서비스를 등록하는것. - Scene Delegate - UI State과 관련된 동작들을 수행 ### Q. Scene의 개념이 생긴 이유는 무엇이고, 언제 어디서 활용해볼 수 있을까요? - iOS12까지는 하나의 프로세스에 하나의 window만 가질 수 있었습니다. - 하지만 iPad에서 multi window를 지원하면서 하나의 앱에 여러개의 UI가 필요하게되었고, 이 때 window의 개념이 scene으로 대체되었습니다. > scene: 디바이스에서 실행 중인 앱 UI의 하나의 인스턴스입니다. 하나의 App에는 여러 개의 Scene 인스턴스가 있을 수 있습니다. ### Q. 앱은 언제언제 Foreground Inactive 상태가 될까요? 2가지 이상의 사례를 생각해봅시다 - 사용자의 동작에 따라 앱의 상태가 변경된다. 1. 사용자가 앱을 실행한다: Not running » In-Active » Active 2. 앱 실행 도중 홈버튼을 누른다: Active » In-Active » Background 3. 앱을 다시 켠다: Background » In-Active » Active 4. 앱이 백그라운에 있다가 Suspended 상태로 전이: Active » In-Active » Background » Suspended > Foreground Inactive 상태 > - 실행 중이지만 이벤트를 수신하지 않는 상태 > - 다른 상태로 이동하는 동안 Foreground Inactive 상태를 거침 ### Q. 앱의 상태가 Background로 지속되기 위한 요건은 무엇무엇이 있을까요? - 공유 시스템 리소스를 보유하지 않아야 한다. - Background로 전환한 후에도 카메라나 공유 시스템 데이터베이스와 같은 리소스에 계속 접근하면 시스템에서 해당 리소스를 확보하기 위해 앱을 종료한다. - Background Tasks를 사용하여 시스템에 앱이 background에서도 계속 실행할 수 있도록 요청한다. > Background 상태 > - 실행 중이지만 화면에는 없는 상태