본문 바로가기
iOS/설명

[iOS] 앱 생명주기 (Application Life Cycle)

by Sky Titan 2021. 4. 28.
728x90
꼼꼼한 재은 씨의 스위프트 기본편
국내도서
저자 : 이재은
출판 : 루비페이퍼 2018.05.01
상세보기

앱 생명주기 (Application Life Cycle)

상태 설명
Not Running 앱이 시작되지 않았거나, 실행되었지만 시스템에 의해 종료된 상태
Inactive - 앱이 전면에서 실행 중이지만, 아무런 이벤트를 받지 않고 있는 상태
- (잠금 상태, 전화 수신, alert에 가림 등등)
Active 앱이 전면에서 실행 중이며, 이벤트를 받고 있는 상태
Background 앱이 백그라운드에 있지만 여전히 코드가 실행되고 있는 상태
- 앱이 백그라운드 상태에 진입하기 전에 실행된 코드만 실행이 되고 나머지는 foreground로 다시 돌아오면 실행된다.
Suspended - 앱이 메모리에 유지되지만 실행되는 코드는 없는 상태.
(iOS 시스템에서 foreground에 있는 앱의 메모리 공간을 확보하기 위해 Suspended 상태에 있는 앱들을 알림없이 정리한다.)

- iOS12를 기준으로 Background상태에서 약 3분 정도 뒤에 Suspended로 전환.
- BackgroundTask 등을 이용해서 시간을 더 늘릴 순 있다.

 

 

App Delegate

  • 앱의 실행 상태가 변화할 때마다 앱 객체는 App Delegate에 정의된 특정 메서드를 호출

 

1. application(_:willFinishLaunchingWithOptions:)

  • 앱이 구동되어 필요한 초기 실행과정이 완료되기 직전에 호출되는 메서드

2. application(_:didFinishLaunchingWithOptions:)

  • 앱이 사용자에게 화면으로 표시되기 직전에 호출되는 메서드
  • 앱이 실행된 후에 진행할 커스터마이징, 초기화 코드 작성
  • 앱이 실행되고 나서 호출되는 첫 메서드

3. applicationDidBecomeActive(_:)

  • 실행된 앱이 foreground에 표시될 때 호출되는 메서드
  • 앱이 Inactive상태에 진입하여 중지된 작업을 재시작하는 코드를 작성
  • EX) 타이머 앱의 경우 Inactive 상태에 들어가면 더 이상 화면 갱신이 이루어지지 않고 예전 화면이 유지되므로 이 메서드를 통해 화면, 남은 시각 등을 갱신해주어야 함.

4. applicationDidEnterBacground(_:)

  • 앱이 백그라운드 상태에 진입했을 때 호출
  • 이 메서드가 호출된다는 것은 미래의 어느 순간에 앱이 종료된다는 것이므로 필요한 사용자 데이터를 종료 전에 미리 저장, 점유된 공유 자원 등을 해제해주어야 함.
  • 종료된 앱이 다시 실행될 때 현재 상태를 복구하도록 필요한 상태 정보도 이 메서드에서 저장 처리

5. applicationWillTerminate(_:)

  • 앱이 종료되기 직전에 호출
  • 사용자 데이터 등을 한 번 더 저장
728x90

'iOS > 설명' 카테고리의 다른 글

[iOS] UIView initializer  (0) 2021.05.27
[iOS] Image Scaling  (0) 2021.05.03
[iOS] 로컬 알림 (Local Notification)  (0) 2021.04.28
[iOS] 프로퍼티 리스트 (Property List)  (0) 2021.04.25
[iOS] UIControl  (0) 2021.04.25

댓글