Skip to content

App's Life Cycle 애플 개발자 문서 #152

@Youngminah

Description

@Youngminah

앱의 생명 주기 관리

앱이 포그라운드 또는 백그라운드에 있을 때 시스템 알림에 응답하고 기타 중요한 시스템 관련 이벤트를 처리



개요

  • 앱의 현재 상태는 언제든지 할 수 있는 것과 할 수 없는 것을 결정하여야함.
  • 포그라운드에서는 사용자의 주의를 끌기위한 것들이 이루어짐
  • 백그라운드에서는 가능한 적은 작업을 수행하여야하며, 가급적이면 화면 밖에 있기 때문에 아무것도 안하는 것이 좋긴함.
  • 앱의 상태가 변경되면 그에따라 동작을 조정해야함.


앱의 상태가 변경되면 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 이상)

image

  • Unattached: 유저나 시스템이 새로운 화면을 앱에 요청하면, UIKit은 그화면을 생성하여 unattached 상태로 만든다.
  • Foreground Inactive: 유저-요청된 화면은 화면에 띄워지기 전에 포그라운드로 옮겨짐.
  • Foreground Active: 화면이 보여지는 상태.
  • Background: 시스템-요청된 화면은 백그라운드로 옮겨짐. 예를들면 위치 이벤트 처리같은 것들.
  • Suspended: 유저가 앱의 UI를 사라지게 하면 잠시 Suspended 상태가 된다.


App-Based Life Cycle (12.0 이하)

image

  • Not running: 유저나 시스템이 새로운 화면을 앱에 요청하면, UIKit은 그화면을 생성하여 unattached 상태로 만든다.
  • Inactive: 잠시 화면이 내려간 상태
  • Active: Foreground로 진입할 때, 앱을 자동으로 활성 상태로 전환함.
  • Background: 시스템-요청된 화면은 백그라운드로 옮겨짐. 예를들면 위치 이벤트 처리같은 것들.
  • Suspended: 유저가 앱의 UI를 사라지게 하면 Suspended 상태가 된다.


Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions