"Learn the order in which your custom code is executed when your app moves to the background."
앱이 백그라운드로 이동할 때 커스텀 코드가 수행되는 순서에 대해 알아봅니다.
앱은 여러 가지 다른 시작점 중 한 가지로부터 백그라운드로 진입하게 될 것입니다. 시스템 이벤트는 일시정지된 앱은 백그라운드로 보낼 수 있습니다. 혹은 실행중이지 않은 앱을 백그라운드에서 launch 되도록 할 수도 있습니다. 다른 앱이 launch되거나 사용자가 홈 스크린으로 이동할 때 포어그라운드 앱은 백그라운드로 전환합니다.
Figure 1 The background execution sequence
백그라운드 모드 기능 중 한 가지를 지원하느 앱의 경우 시스템은 해당 기능과 관련이 있는 이벤트를 처리하기 위해 앱을 백그라운드에서 launch하거나 재개합니다. 예를 들어 시스템은 위치 업데이트에 대한 응답 혹은 백그라운드 가져오기를 수행하기 위해서 앱을 launch하거나 재개할 것입니다.
이벤트가 도착했을 때 앱이 실행중이지 않다면, 시스템은 앱을 launch하고 백그라운드로 직접 이동시킵니다. 아래 순서르 따릅니다.
UIKit
이 앱 딜리게이트의 applicationDidEnterBackground(_:)
메소드를 호출합니다.UIKit
이 launch를 발생시키는 이벤트를 전달합니다.About the App Launch Sequence
https://developer.apple.com/documentation/uikit/app_and_environment/responding_to_the_launch_of_your_app/about_the_app_launch_sequence
https://velog.io/@panther222128/About-the-App-Launch-Sequence
이벤트가 도착했을 때 앱이 메모리에 있거나 일시정지 상태인 경우 시스템은 앱을 백그라운드에서 재개합니다. 아래 순서와 같습니다.
UIKit
이 앱 딜리게이트의 applicationDidEnterBackground(_:)
메소드를 호출합니다.UIKit
이 launch를 발생시키는 이벤트를 전달합니다.다른 앱이 launch 되거나 사용자가 홈 스크린으로 돌아가면, 포어그라운드 앱은 백그라운드로 이동합니다. 아래 순서와 같습니다.
UIKit
은 앱 딜리게이트의 applicationWillResignActive(_:)
메소드를 호출합니다.UIKit
은 앱 딜리게이트의 applicationDidEnterBackground(_:)
메소드를 호출합니다.필요에 따라 백그라운드에서 컨텐트를 가져오고 앱의 인터페이스를 업데이트합니다.
https://developer.apple.com/documentation/uikit/app_and_environment/scenes/preparing_your_ui_to_run_in_the_background/updating_your_app_with_background_app_refresh
https://velog.io/@panther222128/Updating-Your-App-with-Background-App-Refresh
앱이 백그라운드로 이동할 때 중요한 작업을 마무리할 수 있도록 합니다.
https://developer.apple.com/documentation/uikit/app_and_environment/scenes/preparing_your_ui_to_run_in_the_background/extending_your_app_s_background_execution_time
https://velog.io/@panther222128/Extending-Your-Apps-Background-Execution-Time