Managing Your App's Life Cycle (번역)

수킴·2021년 6월 18일
0

iOS앱의 구조

목록 보기
1/1
post-thumbnail

Managing Your App's Life Cycle
개발자 문서를 한글로 번역해보았습니다. 직접 번역을 해서 잘못 번역된 부분이 있을 수 있습니다.

개요

  • 앱의 현재 상태에 따라 언제든지 할 수 있는 작업과 할 수 없는 작업이 결정됩니다.

    예를 들어, 포그라운드 앱은 CPU를 포함한 시스템 리소스보다 사용자의 주의를 끄는 것을 우선시합니다.

  • 반대로 백그라운드 앱은 화면 밖이기 때문에 가능한 한 적은 작업을 수행해야 하며, 가급적 아무 작업도 수행하지 않아야 합니다.

  • 앱이 상태 간에 변경되면 그에 따라 동작을 조정해야 합니다.

  • 앱의 상태가 변경되면 UIKit는 적절한 대리인 개체의 메소드를 호출하여 사용자에게 알립니다.

    iOS 13 이상에서는 UISceneDelegate 개체를 사용하여 장면 기반 앱의 생명 주기 이벤트에 응답합니다. (scene 기반)

    iOS 12 이하에서는 UIAapplicationDelegate 개체를 사용하여 생명 주기 이벤트에 응답합니다.

Scene기반 생명주기 이벤트에 응답

앱이 씬(scene)을 지원하는 경우 UIKit는 각 씬(scene)에 대해 별도의 생명 주기 이벤트를 제공합니다. 씬(scene)은 장치에서 실행 중인 앱 UI의 하나의 인스턴스를 나타냅니다.

사용자는 각 앱에 대해 여러 씬(scene)을 만들어 개별적으로 표시하거나 숨길 수 있습니다. 씬(scene)마다 생명 주기가 있기 때문에 실행 상태가 다를 수 있습니다.

예를 들어, 다른 씬(scene)이 백그라운드에 있거나 일시 중단된 동안 한 씬(scene)이 포그라운드에 있을 수 있습니다.

앱에서 씬(scene)기반을 지원하기 위한 방법

Info.plist의 UIApplicationSceneManifest키를 추가합니다.

Specifying the Scenes Your App Supports

Scene의 상태 전환

사용자 또는 시스템이 앱에 대한 새로운 씬(scene)을 요청하면 UIKit은 unattached상태로 생성합니다.

사용자가 요청한 씬(scene)이라면 foreground로 이동

시스템이 요청한 씬(scene)이라면 background로 이동해 이벤트를 처리할 수 있습니다.

사용자가 앱의 UI를 해제하면 UIKit은 연결된 씬(scene)을 background로 이동하고 결국에는 suspended상태가 됩니다.

UIKit은 리소스를 회수하기 위해서 언제든지 background, suspended 상태의 씬(scene)의 연결을 해제할 수 있습니다. 그 후, unattached상태로 되돌릴 수 있습니다.

씬(scene) 전환을 사용하여 다음과 같은 작업을 수행합니다.

앱기반 생명주기 이벤트에 응답

iOS 12이전 또는 씬(scene)을 지원하지 않는 앱에서는 UIKit이 모든 생명주기 이벤트를 UIAapplicationDelegate 객체에 제공합니다.

앱델리게이트는 별도의 화면에 표시되는 창(displayed on separate screens)을 포함하여 앱의 모든 창(windows)을 관리합니다. 따라서 앱 상태 전환은 외부 디스플레이(external displays)의 콘텐츠를 포함하여 앱의 전체 UI에 영향을 미칩니다.

앱델리게이트 객체와 관련된 상태전환

앱이 시작을 한 후 시스템은 UI가 화면(onscreen)표시여부에 따라 inactive 또는 background상태가 됩니다.

foreground로 시작할 때 시스템은 자동으로 앱을 active상태로 전환합니다.

앱이 종료될 때까지 상태가 active 및 background 간 전환됩니다.

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

다른 중요한 이벤트에 응답

생명주기 이벤트를 처리하는 것외에 다른 이벤트를 처리할 수 있는 앱도 준비해야합니다. 대부분은 UIApplicationDelegate를 사용해서 처리할 수 있지만 경우에 따라서 다른 부분에서 이벤트처리를 할 수 있습니다.

  1. Memory warnings : 앱의 메모리 사용량이 너무 많을 때 수신됩니다. 앱에서 사용하는 메모리 양을 줄이십시오.
  2. Protected data becomes available/unavailable : 사용자가 디바이스(기기)를 잠그거나 잠금을 해제할 때 수신됩니다.
  3. Handoff tasks : NSUserActivity 객체를 처리해야 할 때 수신됩니다.
  4. Time changes : 전화통신사에서 시간업데이트를 보낼 때와 같이 몇몇의 다른 시간을 변경하는 경우 수신됩니다.
  5. Open URLs : 앱이 리소스를 열어야 할 때 수신됩니다
profile
iOS 공부 중 🧑🏻‍💻

0개의 댓글