---
# System prepended metadata

title: 0615 활동학습(App Life cycle)
tags: [활동학습]

---

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