본문 바로가기
iOS/Study

[iOS] 앱의 생명주기

by Callie_ 2023. 11. 27.

 

 

 

 

 

✔︎ 생명주기 (Life Cycle)

 

생명주기란, 앱이 최초로 실행되는 시점부터 종료되는 시점까지의 상태를 의미한다.

그렇다면 이런 앱의 상태가 무엇인가 하면, "the current state of your app determines what it can and can’t do at any time." 즉, 현재 시점에서 앱이 무엇을 할 수 있느냐를 결정 짓는 것을 뜻한다.

 

앱을 개발 및 사용을 하다보면 사용중인 앱을 백그라운드로 잠시 보낼 때도 있고 (카톡으로 받은 계좌번호를 복사하고, 그대로 은행앱을 켜서 붙여놓는다거나 하는 상황), 백그라운드에 둔 채로 해당 앱을 계속 사용할 때도 있고 (유튜브 뮤직을 사용중인 채로 다른 앱을 메인으로 사용하고 있을 수도 있고), 포그라운드 상태로 그 앱을 이용할 때도 있다.

 

이런 일련의 과정들을 앱의 생명주기라고 표현하기도 한다.

 

 

 

 

 

 

 

✔︎ 앱의 상태

 

포그라운드/백그라운드에서 일어나는 앱 상태는 크게 5가지가 있다.

 

 

이미지 출처: https://developer.apple.com/documentation/uikit/app_and_environment/managing_your_app_s_life_cycle

 

 

Not Running :

- 앱이 실행되지 않았거나, 시스템에 의해 종료되어 더이상 동작하지 않는 상태

 

application(_:willFinishLaunchingWithOptions)
//최초 실행될 때 호출되는 메소드

application(_:didFinishLaunchingWithOptions)
//화면이 사용자에게 보여지기 직전에 호출되는 메서드.
//초기화 코드 작성

applicationWillTerminate(_:)
//앱이 종료되기 직전에 호출되는 메서드.

 

 

Inactive (Foreground):

- 앱이 실행 되어 foreground에 진입했으나 이벤트를 받고있지 않은 상태.

-  앱 실행 중 미리알림 등 화면에 덮혀서 앱이 이벤트는 받지 못하는 상태.

- 앱 실행 시 필수적으로 거치게 되는 전환 과정.

 

Active (Foreground) :

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

 

Background :

- 백그라운드 상태에서 다른 앱으로 전환된 상태이거나 사용중인 앱을 나갔을 때의 상태.

- 백그라운드에서 음악을 실행 (e.g. 유튜브 뮤직 실행한 채로 사파리 사용이나 웹툰 앱을 사용)등을 뜻함.

- 일정 시간 사용하지 않으면 suspended 상태가 됨.

 

Suspended :

- 백그라운드 상태에서 그 어떠한 이벤트도 발생하지 않은 상태.

- 메모리상에 올라가 있으나, 이벤트가 없기 때문에 실질적으로 사용 중인 상태가 아님.

 

 

 

 

 

 

 

 

 

 

📌 참조

 

https://developer.apple.com/documentation/uikit/app_and_environment/managing_your_app_s_life_cycle

 

Managing your app’s life cycle | Apple Developer Documentation

Respond to system notifications when your app is in the foreground or background, and handle other significant system-related events.

developer.apple.com

 

'iOS > Study' 카테고리의 다른 글

[iOS] Keychain vs UserDefaults  (0) 2023.12.17
[Study/iOS] Method Dispatch  (0) 2023.12.02
[Study/iOS] unowned vs weak  (2) 2023.11.14
[Swift] Enum with Reusable VC  (0) 2023.10.10
[iOS] Shadow vs ClipsToBound  (0) 2023.07.23