생명주기라는 것은 앱의 최초 실행부터 앱이 완전히 종료되기까지 앱이 가지는 상태와 그 상태들 사이의 전이를 뜻한다. 앱의 상태는 앱이 현재 어떠한 것을 할 수 있는 가를 결정한다. 예로 들어, Foreground 상태의 애플리케이션은 유저와 직접 상호작용하기 때문에 시스템 자원 사용 등에서 우선순위를 갖는다. 반면 Background 상태의 앱은 스크린에 드러나지 않기 때문에 작업을 하지 않거나, 하더라도 최소한의 작업만 수행해야 한다. 앱의 상태가 변하게 되면, 이 상태에 따라 앱의 행동을 조절해줘야 하는데, 이 조절작업을 하기 위해 UIKit는 특정 위임객체(delegate object)에 메시지를 보내주게 된다.
UIKit App 상태는 다음과 같이 나눠집니다.
Not Running : 앱이 실행되지 않은 상태거나 System에 의해 종료되어진 상태
Foreground상태 : APP이 실행되어 사용자에게 보여지고 있는 상태(In-Active와 Active를 합쳐서 Foreground 라고 함)
오직 하나의 App만 Foreground 상태를 가지며 Inactive, Active 상태로 나뉘어집니다.
Inactive 앱이 실행중이지만 아직 아무런 이벤트를 받지 않은 상태 (Foreground 상태에서 전화가 왔을때, 잠금상태, 멀티태스킹 스크린)
Active 앱이 실행중이며 현재 이벤트를 받고 있고 발생한 상태
Background : 앱이 백그라운드에 있는 상태이지만 여전히 실행되고있는 코드가 있는 상태
Foreground 상태에서 HomeScreen으로 이동한 상태
Background 상태로 전환되기 전에 호출된 Task가 끝나지 않은 경우 Background상태에서도 실행됩니다.
Background 상태에서 후출된. Task는 App이 Foreground 상태로 전환된 후에 실행됩니다.
Suspened : 앱이 백그라운드에 있고 실행되는 코드가 없는 상태 (App은 여전히 메모리에 존재하며 Suspend 상태가 될 당시의 상태를 저장하고 있지만, CPU나 배터리를 소모하지 않습니다. 언제든지 메모리 부족등의 이유로 종료됨.)
- 앱을 켜지 않은 상태에서도 푸쉬, 메세지가 오는 것은 서버에서 보낸 신호를, 시스템이 받아서 하는 것
- 음악 어플 같은 경우, background 상태로 켜져있어야하기 때문에 프로젝트 설정에서 background실행이 필수이다.
Backgrounds 상태에서의 자세한 설명을 포함합니다.