아삭아삭 iOS 개발

[iOS] 앱의 생명주기 (life cycle) 본문

카테고리 없음

[iOS] 앱의 생명주기 (life cycle)

바닐라머스크 2022. 5. 26. 15:29

앱 생명주기(life cycle)

  • 앱의 실행부터 종료되기까지의 주기
  • 시스템 알림에 응답하거나 여러 관련 이벤트들을 처리하는 단계
  • 5가지 상태 존재 (Not Running / Inactive / Active / Background / Suspended)
  • (UIWindowSceneDelegate 프로토콜을 채택하여) SceneDelegate에서 앱 생명주기 각 상태에 해당하는 메서드 구현
  • (UIApplicationDelegate 프로토콜을 채택하여) AppDelegate에서 앱 생명주기 각 상태에 해당하는 메서드 구현

앱 생명주기의 역할

  • iOS 환경에서 여러 앱을 실행할 경우, 현재 사용중인 앱 외 백그라운드로 간 다른 앱들도 모두 고려하여 사용성을 향상시키고 잘 관리할 수 있음

    ex) 보안이 중요한 앱이 백그라운드로 갈 때 화면이 안보이도록 하거나, 다시 사용자에게 보여질 때 재로그인 요청하는 등의 처리
    ex) A라는 앱을 사용하다가 B라는 앱을 사용할 때 A앱의 데이터를 저장해두는 처리
    ex) 유튜브를 보는 중에 전화가 오면, 시청중이던 영상을 멈추고 볼륨이 감소함 등

앱 생명주기 관련 상태 5가지

  1. Not Running
    : 앱이 실행되지 않은 상태
  2. Inactive
    : 앱이 실행중인 상태 (단, 아무런 이벤트를 받고 있지는 않음)
       ex) 앱상태 전환시 잠시 머물러가는 상태
       ex) 게임앱을 사용하는 도중 푸시알람이 오거나 전화가 오는 등 방해요소로 인해  잠시 유저이벤트를 받을 수 없는 상태
  3. Active
    : 앱이 실행중인 상태 (이벤트가 발생하여 받고 있음)
  4. Background
    : 앱이 백그라운드에 있는 상태 (실행되는 코드가 있음)
        ex) 앱이 suspended 상태로 들어가기 전에 거쳐가는 상태
  5. Suspended
    : 앱이 백그라운드에 있는 상태 (실행되는 코드가 없음)

 

background와 suspended 상태의 차이점?
- background에서는 앱이 실행될 수 있음
   ex) 음악 앱으로 음악을 틀어두면, 메시지나 쿠팡 등 다른 앱을 실행해도 계속 음악이 실행됨
- suspended에서는 앱이 메모리상에 유지되지만, 메모리가 부족할 경우 시스템이 자동적으로 메모리상에서 앱을 제거해버림
- background에서 따로 실행해야 하는 기능이 있는게 아니라면 background를 거쳐서 suspended 상태로 들어옴

 

 

 

■ 참고자료

[1] https://developer.apple.com/documentation/uikit/uiapplicationdelegate

[2] https://sihyungyou.github.io/iOS-lifecycle/

[3] https://developer.apple.com/documentation/uikit/app_and_environment/managing_your_app_s_life_cycle