Swift/학습

[Swift] iOS App의 LifeCycle에 대하여 알아보자!

언클린 2020. 6. 22. 15:07
728x90

이번 글에서는 App의 생명 주기에 대하여 알아보겠습니다. 

저도 어떤 식으로 동작하는지 잘 몰라 이번 기회로 많은 것을 알아볼 수 있는 기회가 되었습니다.

App의 생명 주기란? App이 실행되어 종료까지의 과정이라고 합니다. 

크게 App이 보이지 않는 상태인 Background상태와 App이 화면에 출력되어지고 있는 Foreground상태로 나눌 수 있습니다.


1. 앱 실행

그렇다면 App을 실행할 시 내부에서는 어떠한 동작이 진행되고 있는지 한 번 알아보겠습니다.

  1. UIApplication의 생성  
    • Event Loop 에서 발생한 여러 Event 를 감지, AppDelegate에 전달해 줍니다.
  2. @UIApplicationMain 어노테이션이 있는 클래스를 찾아 AppDelegate 클래스를 생성
    • 프로젝트 생성 시 AppDelegate.swift에 작성되어 있습니다.
    • App의 상태에 따라 실행될 수 있는 함수 들이 정의되어 있습니다.
    • iOS13.0이후의 SceneDelegate.swift와 나뉘어져 있는 분은 이 클래스 안에 App의 상태가 작성되어 있습니다.

     

  3. Main Event Loop 실행 

    • 유저의 입력에 따른 이벤트 입니다. (터치, 제스처 등)

2. App State

다음으로 AppState에 대하여 알아보겠습니다.

  • Not running(Terminated) : App이 실행되어 있지 않거나 시스템에 인하여 완전히 종료된 상태입니다.
  • Inactive(Foreground) : 화면이 표시중인 상태인 Foreground에는 두 가지의 상태가 존재합니다. 그 중 Inactive는 App이 실행중이지만 event를 받지 않는 상태를 나타냅니다.
  • Active(Foreground) : App이 실행되어 있고 event를 받고 있는 상태입니다.
  • Background : 홈 화면으로 이동 하여 Background 상태에 있지만 실행되는 코드가 있는 상태입니다. 홈 화면이어도 App의 기능이 동작하는 것이 여기에 해당합니다.
  • Suspended : 앱이 Background 상태에 있고 실해되는 코드가 없는 상태입니다. 

3. AppDelegate에서의 활용

다음으로 그렇다면 App State를 AppDelegate에서 어떻게 활용할 수 있는지 알아보겠습니다. 

AppDelegate에는 아래와 같은 메서드가 작성되어 있기 때문에 상황에 맞게 로직을 구현할 수가 있습니다.

  • application(_:didFinishLauncingWithOptions:) - App 실행 시 
  • applicationWillResignActive(_:) - App이 active에서 Inactive 상태로 전환될 시
  • applicationDidEnterBackground(_:) - App이 Background 상태로 전환될 시
  • applicationWillEnterForeground(_:) - App이 Background에서 Foreground 상태로 전환될 시
  • applicationDidBecomeActive(_:) - App이 active상태로 전환되었을 시
  • applicationWillTerminate(_:) - App이 종료되기 직전

4. 마무리

이번 글을 통하여 App의 생명 주기에 대하여 알아보았습니다. 

App 개발에 있어서 개발 실력도 물론 중요하지만 App을 얼마나 이해하고 있는가도 정말 중요한 것 같습니다. 

저도 이번 주제에 대해서 알아보면서 많을 것을 알 수 있는 기회가 되었고 부족한 부분을 채울 수 있었습니다.

지적 사항이나 궁금하신 점은 댓글에 적어주시면 감사하겠습니다.

 


#참조

https://velog.io/@cskim/iOS-App-%EC%83%9D%EB%AA%85%EC%A3%BC%EA%B8%B0Life-Cycle

 

[iOS] App Life Cycle

iOS Application의 생명 주기에 대해 알아봅니다

velog.io

https://twer.tistory.com/1

 

앱 생명주기(App Life Cycle)

swift로 앱을 만들기에 앞서 기본적인 앱의 생명주기(Life Cycle)에 대해 정리해보려 합니다. 해당 내용은 애플개발자페이지와 medium블로그를 참고하였습니다. 앱 생명주기(App Life Cycle) 앱의 생명주��

twer.tistory.com


환경 

Xcode 11.3.1

Swift 5

 

 

 

 

728x90