티스토리 뷰

iOS

[iOS] App의 생명 주기(Life-cycle)

YEJINEE 2021. 4. 9. 17:47

iOS 앱의 5가지 생명주기

  • Not Running
    • App이 아직 실행되지 않았거나 완전히 종료된 상태
  • Inactive(Foreground)
    • App이 실행되고 있어 foreground에 있지만 이벤트를 받지 않는 상태
    • Active 상태로 넘어가기 전에 잠시동안 머무른다
    • ex) 미리알림 등의 alert가 올라와 앱이 실질적으로 이벤트를 받지 못하는 상황
  • Active(Foreground)
    • App이 실행되고 있어 foreground에 있고 이벤트가 발생한 상태
    • 일반적으로 앱이 돌아가는 상태
  • Background
    • App이 background 상태에 있으나 실행되고 있는 코드가 있는 상태
    • Background 상태로 실행되는 app은 inactive 대신 background 상태로 진입
    • Suspended 상태로 넘어가기 전에 잠깐 머무른다 (추가 코드 실행이 필요하면 머무는 시간 연장)
    • 홈버튼을 두번 눌러 앱을 다시 열었을 때, 처음부터 재실행되지 않는다면 background 상태에 있다가 올라온 것이다
    • ex) background에서 음악을 재생하거나 거리를 추적하고 있는 상황
  • Suspended
    • App이 background 상태에 있으며 메모리에만 올라가 있고 코드를 실행하지 않는 상태
    • Background에서 추가적인 작업이 없다면 자동으로 suspended 상태로 진입
    • 다른 app을 실행하면서 메모리가 부족해지면 iOS system은 suspended 상태에 있는 app들을 종료함으로써 메모리를 확보

 

AppDelegate

  • 위의 상태들에 접근하기 위해 AppDelegate.swift 파일을 사용
  • 프로젝트 내의 AppDelegate.swift 안에서 관리되는 생명 주기
  •  AppDelegate는 앱의 상태에 따라 실행되는 Delegate 메소드를 담고 있다

✔️application(_:willFinishLaunchingWithOptions:)

  • App이 최초 실행될 때 호출되는 메소드
  • Not Running -> Foreground 로 상태 변환

 

✔️application(_:didFinishLaunchingWithOptions:)

  • App이 실행 직후 화면이 사용자에게 보여지기 직전에 호출
  • 초기화 코드 작성

 

✔️ applicationDidBecomeActive(_:)

  • App이 Active 상태로 전환되어 화면이 나타난 후 직후 호출
  • Inactive 상태로 넘어가 중지된 작업을 여기서 반드시 재실행시켜줘야 함 ex) 화면 갱신 등

 

✔️applicationWillResignActive(_:)

  • App이 Inactive 상태로 전환되기 직전 호출

 

✔️applicationDidEnterBackground(_:)

  • App이 Background 상태로 전환된 직후 호출
  • Background 상태에서 Suspended 상태로 전환
  • App이 언젠가 종료될 것임을 뜻하기 때문에 중요한 사용자 데이터를 저장하거나, 공유 자원을 해제하는 등의 작업 수행 필요
  • App이 재실행될 때 직전 상태를 복구할 수 있는 정보를 저장하는 코드 작성

 

✔️applicationWillEnterForeground(_:)

  • App이 Background에서 Foreground로 돌아오기 직전, 화면에 보여지기 직전 호출
  • 호출된 뒤 Inactive 상태를 거쳐 Active 상태로 진입

 

✔️applicationWillTerminate(_:)

  • App이 종료되기 직전에 호출
  • 다음 경우에는 호출되지 않음
    • 메모리 확보를 위해 Suspended 상태에 있는 app을 종료시킬 때
    • 사용자가 multitasking UI를 통해 종료할 때
    • 오류로 인해 app이 종료될 때
    • Deivce를 재부팅할 때

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함