# 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 상태
> - 실행 중이지만 화면에는 없는 상태