728x90
|
앱 생명주기 (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 |
댓글