티스토리 뷰

Article

Managing Your App's Life Cycle

Gobans 2022. 4. 20. 15:47

앱이 foreground나 background에 있을 떄 시스템 알림에 응답하고 다른 중요한 시스템 관련 이벤트를 다루세요.

 


요약

앱의 현재 상태에 따라 수행할 수 있는 작업과 할 수 없는 작업이 결정됩니다. 예를 들어, foreground 앱은 사용자가 집중하고 있기 때문에 CPU를 포함한 시스템 리소스보다 우선합니다. 반대로 백그라운드 앱은 화면 밖에 있기 때문에 가능한 한 적은 작업을 수행해야 하며 가능하면 아무것도 하지 않아야 합니다. 앱이 상태마다 바뀌면 그에 따라 동작을 조정해야 합니다.

 

당신의 앱의 상태가 변할 떄, UIKit는 당신에게 적절한 delegate object메소드를 호출하여 알려줍니다.

  • iOS 13 버전 이상은 UISceneDelegate objects 를 이용하여 scene-based app 에서의 라이프 사이클 이벤트들을 처리합니다.
  • iOS 12 버전 이전은 UIApplicationDelegate object 를 이용하여 라이프 사이클 이벤트들을 처리합니다.

 

메모
앱에서 씬(scene) 지원을 활성화하면 iOS 13 이상에서는 항상 scene delegates 를 사용합니다. iOS 12 이전 버전에서는 시스템이 app delegaate를 사용합니다.

 

 

Scene-Based 라이프 서클 이벤트에 응답

 

앱이 scene을 지원하는 경우, UIKit은 각각 별도의 라이프사이클 이벤트를 제공합니다. scene은 장치에서 실행되는 앱의 UI 인스턴스 중 하나를 나타냅니다. 사용자는 각 앱에 대해 여러 장면을 만들고 개별적으로 표시하거나 숨길 수 있습니다. 각 scene 에는 자체 라이프 사이클이 있기 때문에 각 scene은 다른 실행 상태에 있을 수 있습니다. 예를 들어, scene이 foreground에 있는 반면 다른 장면은 background에 있거나 일시 중단되어 있을 수 있습니다.

 

 

중요
씬(scene) 지원은 옵션인 기능입니다. 기본 지원을 사용하려면 앱에서 지원하는 장면 지정에 설명된 대로 UIA ApplicationSceneManifest 키를 앱의 Info.plist 파일에 추가합니다.

 

 

다음 그림은 씬(scene)의 상태 전환을 보여 줍니다. 사용자나 시스템이 앱의 새 장면을 요청하면 UIKit가 앱을 만들어 unattached 상태로 만듭니다. 사용자가 요청한 씬(scene)이 화면에 나타나는 foreground 으로 빠르게 이동합니다. 시스템이 요청한 장면은 일반적으로 이벤트를 처리할 수 있도록 background으로 이동합니다. 예를 들어 시스템이 background에서 scene을 실행하여 위치 이벤트를 처리할 수 있습니다. 사용자가 앱의 UI를 해제하면, UIKit는 관련 장면을 배경 상태로 이동시키고 결국 suspended 상태로 이동합니다. UIKit은 언제든지 background 또는 suspended 상태의 scene의 연결을 끊고 리소스를 회수하여 해당 장면을 unattached 상태로 되돌릴 수 있습니다.

 

 

 

 

 

장면 전환을 사용하여 다음 작업을 수행합니다.

  • UIKit이 씬(scene)을 앱에 연결하면 씬(scene)의 초기 UI를 구성하고 씬(scene)에 필요한 데이터를 로드합니다.
  • foreground-active 상태로 전환할 때 UI를 구성하고 사용자와 상호 작용할 준비를 합니다. Preparing Your UI to Run in the Foreground 를 참조하십시오.
  • forground-active 상태에서 벗어나면 데이터를 저장하고 앱의 동작을 조용하게 합니다. Preparing Your UI to Run in the Foreground 를 참조하십시오.
  • background 상태로 전환되면 중요한 작업을 끝내고 가능한 많은 메모리를 확보한 후 앱 스냅샷을 준비합니다. Preparing Your UI to Run in the Foreground 를 참조하십시오.
  • 씬(scene) 연결 해제 시 씬(scene)과 연결된 공유 리소스를 모두 정리합니다.
  • 장면 관련 이벤트 외에도 UIApplicationDelegate 개체를 사용하여 앱을 실행할 때 응답해야 합니다. 앱 시작 시 수행할 작업에 대한자세한 내용은 Responding to the Launch of Your App을 참조하세요 

애플리케이션 기반 라이프사이클 이벤트에 대응

 iOS 12 이전 버전 및 씬을 지원하지 않는 앱에서 UIKit은 모든 라이프사이클 이벤트를 UIApplicationDelegate object에 전달합니다. app delegate는 별도의 화면에 표시되는 창을 포함하여 앱의 모든 창을 관리합니다. 따라서 앱 상태 전환은 외부 디스플레이의 콘텐츠를 포함하여 앱의 전체 UI에 영향을 미칩니다.


 다음 그림은 app delegate obejct 와 관련된 상태 전환을 보여 줍니다. 실행 후 시스템은 UI가 화면에 나타나려고 하는지에 따라 앱을 inactive 또는 background 상태로 전환합니다. 시작 시 시스템이 앱을 자동으로 활성 상태로 전환합니다. 이후 앱이 종료될 때까지 active 상태와 background 간에 변동이 발생합니다.

 

 

 

앱 전환을 사용하여 다음 작업을 수행합니다.

 

 

다른 중요한 이벤트에 응답하기

 앱은 수명 주기 이벤트를 처리하는 것 외에도 다음 표에 나열된 이벤트를 처리할 수 있도록 준비해야 합니다. UIApplicationDelegate 개체를 사용하여 이러한 이벤트의 대부분을 처리합니다. 경우에 따라 알림을 사용하여 해당 알림을 처리할 수 있어 앱의 다른 부분에서 응답할 수 있습니다.

Memory warnings 당신의 앱의 메모리 사용이 매우 높을 떄 받게 됩니다. 당신의 앱 총사용량을 줄여야합니다;  Responding to Memory Warnings 를 참조하세요
Protected data becomes available/unavailable 유저가 그들의 기계를 잠그거나 풀 때 받게 됩니다.  applicationProtectedDataDidBecomeAvailable(_:) and applicationProtectedDataWillBecomeUnavailable(_:)를 참조하세요.
Handoff tasks  NSUserActivity 의 실행이 필요할 떄 실행됩니다. application(_:didUpdate:) 를 참조하세요.
Time changes 시간이 변경될 때 받게됩니다. 예) 휴대폰이 시간 업데이트를 보냈을 떄  applicationSignificantTimeChange(_:) 를 참조하세요
 Open URLs 당신의 앱이 리소스 열기가 필요할 떄 받게됩니다. application(_:open:options:) 를 참조하세요.

 


원문

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

'Article' 카테고리의 다른 글

Responding to the Launch of Your App  (0) 2022.04.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함