[iOS] Life Cycle

RudinP·2024년 2월 3일
0

Study

목록 보기
130/258

scene을 사용하지 않거나, iOS13 이전 버전 기반일 때 사이클

Not Running

  • 현재 실행중이지 않은 상태

사용자가 앱 실행시

앱 초기화 실행 -> Inactive -> Active

Active 상태

  • 초기화가 모두 끝나고 앱 화면이 보이며 사용자 이벤트 입력 가능

사용자가 다른 앱으로 이동하거나 홈 화면 이동

Inactive -> Background -> Suspended

Background

  • 터치 이벤트는 못 받지만 파일 다운로드는 가능
  • 실행할 작업이 없다면 Suspended 상태가 됨

Suspended

  • 아무런 작업 X
  • 최소한의 리소스
  • 일시정지

다시 앱 실행 시

Inactive -> Active

  • 다시 실행 시 초기화 단계는 거치지 않음

앱을 완전히 닫을 시

Suspended -> Not Running

  • 모든 리소스 반납

Delegate

  • 상태가 바뀔 때 마다 Delegate 실행(+ Notification post)
func application(_ :willFinishLaunchingWithOptions:)
func application(_ :didFinishLaunchingWithOptions:)
~ iOS13 이전, 혹은 scene을 사용하지 않을 때만 호출
// active상태가 된 직후 호출
func applicationDidBecomeActive(_ application: UIApplication)

// active -> inactive로 전환되기 직전 호출
func applicationWillResignActive(_ application: UIApplication)

// background 전환 직후 호출
func applicationDidEnterBackground(_ application: UIApplication)

// background와 foreground의 구분은 UI의 표시 유무
// foreground 상태 진입 직전
func applcationWillEnterForeground(_ application: UIApplication)
~

// 앱이 완전히 종료되고 Not Running 직전 호출.
// 시스템 메모리 부족, 혹은 다른 이유로 종류, 혹은 앱스위처로 사용자가 직접 닫을 때 호출
func applicationWillTerminate(_ application: UIApplication)
  • 앱이 실행되면 willFinishLaunchingWithOptionsdidFinishLaunchingWithOptions 실행
    • 이 둘은 scene 사용 여부와 상관 없다
  • scene을 사용한다면 UIKit이 didBecomeActive를 호출되지 않는다.
    • sceneDidBecomeActive를 사용하면 호출됨.
    • scene 사용 여부와 관계없이 UIKit이didBecomeAcitveNotification은 post 된다.
  • 앱이 종료되면 willTerminate 호출
profile
iOS 개발자가 되기 위한 스터디룸...

0개의 댓글