티스토리 뷰

Frontend/watchOS

[watchOS] Apple Watch Life Cycle

데니 Denny 2020. 3. 3. 14:23
반응형
SMALL

이번 포스트에서는 Apple Watch의 Life Cycle에 대해 알아보도록 하겠습니다.

 

Watch OS Extension의 상태

Watch OS Extension의 상태는 크게 5가지가 있습니다.

Not Running, In Active, Active, Background, Suspended

Not Running

Watch App이 실행되고 있지 않은 상태, 사용자가 Watch App을 종료했거나 시스템이 App을 종료한 상태

In Active

Watch App이 현재 Foreground에서 실행 중인 상태이나 어떠한 제어나 제스쳐가 발생하지 않고 있는 상태

이 상태에서 Watch App은 별도의 다른 코드를 실행하고 있을 수도 있습니다. 새로 시작된 App이 일반적으로 Active 상태로 전환될 때 아주 짧은 시간 동안 In Active 상태가 됩니다.

Active 상태에서 In Active 상태로 된 App은 Background 상태로 넘어갈 준비를 하게 됩니다.

Active

watch OS App이 Foreground에서 실행 중이며 각종 제어 및 사용자의 제스처로부터 작업을 받습니다.

화면에서 실행되는 앱의 일반적인 모드입니다.

Background

시스템은 watchOS 앱에 적은 양의 Background Running Time을 부여했습니다. Background Session을 실행하고 백그라운드 작업을 수행 할 때와 App을 일시 중단하기 전에 시스템에서 App에게 Background Running Time을 제공합니다.
시스템은 경고없이 일시 중단 된 App을 제거 할 수 있으므로 extension의 delegate 함수 중 applicationDidEnterBackground () 메서드를 사용하여 App의 현재 상태를 다시 만드는 데 필요한 데이터를 저장시켜야 합니다. 필요한 경우 ProcessInfo 클래스의 performExpiringActivity (withReason : using :) 메소드를 호출하여 추가 백그라운드 실행 시간을 요청할 수 있습니다.

Suspended

App이 메모리에 있지만 코드를 실행하지 않습니다. 시스템은 Background에 있고 수행해야할 작업이 남지 않은 앱을 일시 중단시킵니다. 시스템은 언제든지 일시 중지 된 앱을 제거하여 다른 앱을 위한 메모리 공간을 만들 수 있습니다. 시스템은 일시 중단 된 앱을 자동으로 제거합니다. 일시 중지 된 앱은 깨어나지 않으며 시스템에서 제거하기 전에 알림을 받지 않습니다.
시스템은 자주 사용하는 앱을 메모리에 유지하려고 시도하여 최대한 빨리 재개(Reload) 할 수 있도록합니다. 특히, 시스템은 가장 최근에 실행 된 앱, Dock에있는 모든 앱 및 현재 활성화 된 시계 모드에 문제가 있는 앱을 유지합니다. 메모리 제약으로 인해 시스템에서 이러한 앱 중 하나를 제거하여 더 많은 메모리를 사용할 수 있게 되면 시스템에서 앱을 다시 시작합니다.

Watch OS Life Cycle Diagram

위 다이어그램은 Apple Watch OS의 Life Cycle을 나타낸 그림입니다. 상태가 어떻게 변화하는지를 알 수 있습니다.

빨간 원에 적힌 A, B, C에 해당하는 상태 전환에 대해 간단하게 살펴보고 넘어가겠습니다.

 

상태 전환 A.

실행 중이 아닌 Background 또는 In Active 상태로 전환 할 때 시스템은 Extension Delegate의 applicationDidFinishLaunching() 메서드를 호출합니다.

 

상태 전환 B.

In Active 상태와 Active 상태 사이를 전환 할 때 시스템은 applicationDidBecomeActive() 또는 applicationWillResignActive() 메소드를 호출합니다.

 

상태 전환 C.

Background와 In Active 상태 사이를 전환 할 때 시스템은 applicationWillEnterForeground() 또는 applicationDidEnterBackground() 메소드를 호출합니다.

상태 전환 단계

watch OS App은 앱의 현재 상황에 따라 다른 상태로 실행됩니다. 또한 앱의 상태와 인터페이스의 상태 사이에는 직접적인 관계가 없습니다. 예를 들어, 인터페이스가 활성화되어있는 동안 앱이 비활성화 될 수 있습니다. 다음 표는 가장 일반적인 상황에서 앱 및 인터페이스 상태를 보여줍니다.

상태 전환 단계 (출처 : 애플 공식 문서)

백그라운드로 데이터 받기

시스템이 백그라운드 데이터를 수신 할 때 해당 데이터를 처리하기 위해 watchOS 앱을 즉시 깨우지 못할 수 있습니다. 대신 배터리 수명을 보존하기 위해 데이터 전송이 지연 될 수 있습니다.

앱이 현재 Active 또는 OnScreen 또는 In Active 및 가장 앞선 앱 중 하나 인 경우 시스템은 즉시 앱에 데이터를 전달합니다. 앱이 백그라운드에 있으면 시스템은 10 분 이내에 앱을 깨워 데이터를 전달합니다.

 

이번 포스트에서는 Watch OS App의 Life Cycle에 대해 살펴보았습니다.

 

반응형
LIST
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함