iOS 앱의 생명주기 알아보기

2022. 11. 9. 21:34면접준비

@Main에 대해서 설명하시오.


 - 메인 함수 호출 // 프로그램의 시작점으로, 모든 프로그램은 하나의 시작점만 가지고 있어야 하므로 main 함수는 언제나 하나만 존재해야 한다.
 - iOS에서는 메인 함수가 UIApplicationMain을 호출한다. UIApplicationMain -> AppDelegate를 생성한다.
 

 AppDelegate란?


 - 앱의 생명주기
 
 상태 변화에 따라 다른 동작을 처리하기 위한 앱 델리게이트 메서드들을 설명하시오.
 // - willFinishLaunchingWithOption: 앱 초기화 끝나려고 할 때
 - didFinishingLaunchingWithOption: 앱 초기화 끝나고 나서
 - 백그라운드, 포그라운드, 앱이 꺼졌다

 

 

iOS Application의 생명주기를 설명해주세요.

 

생명주기라는 것은 앱의 최초 실행부터 앱이 완전히 종료되기까지 앱이 가지는 상태와 그 상태들 사이의 전이를 뜻합니다.

앱의 상태는 앱이 현재 어떠한 것을 할 수 있는가를 결정합니다.

 

1.Not Running 

  • 앱이 실행되지 않았거나, 완전히 종료되어 동작하지 않는 상태

 

2.Foreground

  • 앱이 전면에서 실행되고 있는 상태

 

 2. 1 Foreground -Inactive  

앱이 실행되면서 foreground에 진입하지만, 앱 실행 중 미리 알림 또는 일정 얼럿이 화면에 덮여서 앱이 실질적으로는 이벤트를 받지 못하는 상태

(Inactive : 실행 중이지만 이벤트를 받고 있지 않은 상태. 예를 들어, 앱 실행 중 미리 알림 또는 일정 얼럿이 화면에 덮여서 앱이 실질적으로 이벤트는 받지 못하는 상태등을 뜻합니다.)

 

앱의 상태 전환 과정에서 잠깐 머무는 단계

ex) 미리알림 등의 alert가 올라와 앱이 실질적으로 이벤트를 받지 못하는 상황

전화가 왔을 때, 시스템 메시지가 떴을 때 (예 : 배터리 부족)

 

 2. 2 Foreground - active   ( Active : 애플리케이션이 실질적으로 활동하고 있는 상태.) 터치 이벤트 먹는 상태

앱이 실행 중이며, foreground에 있고, 이벤트를 받고 있는 상태

애플리케이션이 실질적으로 활동하고 있는 상태

 

3. Background

  • 앱이 백그라운드에 있으며, 다른 앱으로 전환되었거나 홈 버튼을 눌러 밖으로 나갔을 때의 상태

 

  • Background 상태로 실행되는 app은 inactive 대신 background 상태로 진입

- Suspended 상태가 되기 전 잠깐 머무는 상태(추가 코드 실행이 필요하면 머무는 시간 연장)

- 코드가 실행 중이지만 사용자의 이벤트를 받을 수는 없음 추가적인 코드 (ex. 파일 다운로드)를 실행하는 동안 머무름

- 홈버튼을 두 번 눌러 앱을 다시 열었을 때, 처음부터 재실행되지 않는다면 background 상태에 있다가 올라온 것

ex) background에서 음악을 재생하거나 거리를 추적하고 있는 상황

Background : 백그라운드 상태에서 실질적인 동작을 하고 있는 상태. 예를 들어 백그라운드에서 음악을 실행하거나, 걸어온 길을 트래킹 하는 등의 동 뜻합니다.

 

 

4. Suspended

앱이 Background 상태에 있지만, 아무 코드도 실행하지 않는 상태입니다.

백그라운드에서 특별한 작업이 없을 경우 Suspended 상태가 됩니다.

이 상태에서 앱은 메모상에 올라가 있지만 아무 일도 하지 않기 때문에 배터리를 사용하지 않습니다.

 

suspended : 백그라운드 상태에서 활동을 멈춘 상태. 빠른 재실행을 위하여 메모리에 적재된 상태지만 실질적으로 동작하고 있지는 않습니다. 메모리가 부족할때 비로소 시스템이 강제종료하게 됩니다.