iOS - 앱의 생명주기 (1_Life Cycle, App State)

이한솔·2023년 8월 28일
0

iOS 앱개발 🍏

목록 보기
15/49

앱의 생명주기 (Life Cycle)

생명주기

앱의 최초 실행부터 앱이 완전히 종료되기까지 앱이 가지는 상태와 그 상태들 사이의 전이를 뜻한다. 앱의 상태는 앱이 현재 어떠한 것을 할 수 있는가를 결정한다.

앱의 생명주기

앱의 실행/종료 및 앱이 foreground/background 상태에 있을 때 시스템이 발생시키는 이벤트에 의해 앱의 상태가 전환되는 일련의 과정

앱 실행 시 발생되는 일

  1. @main 함수가 실행된다.
  2. main 함수는 UIApplicationMain 함수를 호출한다.
  3. UIApplicationMain 함수는 앱의 본체에 해당하는 객체인 UIApplication 객체를 생성한다.
  4. Main Event Roop를 실행한다.


Main Run Roop

유저가 일으키는 이벤트들을 처리하는 프로세스
UIApplication 객체는 앱이 실행될 때 메인런루프를 실행하고 이 메인런루프를 뷰와 관련된 이벤트나 뷰의 업데이트에 활용한다.
메인런루프는 뷰와 관련되어 있어서 메인Thread에서 실행된다.

💡 유저가 일으키는 이벤트 처리 과정
1. 유저가 이벤트를 일으킨다 (버튼 터치, 화면 스와이프 등)
2. 시스템을 통해 이벤트가 생성된다.
3. UIKit 프레임워크를 통해 생성된 port로 해당 이벤트가 전달된다.
4. 이벤트는 앱 내부에 Queue의 형태로 Evenet Queue에 쌓인다.
5. Event Queue에 있는 이벤트들이 하나씩 Main Run Roop에 하나씩 매핑된다.
6. UIApplication 객체는 Main Run Loop에서 가장 먼저 실행되어야 하는 이벤트를 결정한다. 이 결정은 앱의 현재 상태와 이벤트의 우선순위 등을 고려하여 이루어진다.



앱 상태 (App State)

앱의 상태는 총 5개로 구분된다.

  1. Not running: 앱이 실행되지 않거나, 완전히 종료되어 동작하지 않는 상태

  2. Inacticve Foreground: 앱의 상태 전환 과정에서 잠깐 머무는 상태
    앱이 실행되면서 Foreground에 진입하지만, 어떤 이벤트도 받지 않는 상태

  3. Active Foreground: 앱이 실행중이며 Foreground에 있고 이벤트를 받고 있는 상태

  4. Background: 앱이 Background에 있으며 다른 앱으로 전환되거나 홈버튼을 눌러서 밖으로 나가졌을 때 상태
    일정시간이 지나면 앱이 Suspended 상태로 변한다.

  5. Suspended Background : 앱이 Background 상태에 있지만 아무 코드도 실행하지 않은 상태, 이 상태에서 앱은 메모리 상에 올라가있지만 아무 일도 하지 않기 때문에 배터리를 사용하지 않는다. 또한, OS에 의해 메모리부족현상이 발생하면 이 상태의 앱은 알림없이 메모리에서 없어질 수 있다.



0개의 댓글