본문 바로가기
Programming/Windows Phone

윈도우 폰 실행 모델이란?

by 강철 벼룩 2011. 12. 2.


앞으로 몇 차례에 걸쳐 윈도우 폰 애플리케이션 개발에 핵심이 되는 개념을 다뤄본다. 애플리케이션을 만들러 가기전에 이러한 개념에 익숙해지는 것이 먼저일것 같다.

제일 먼저 다뤄볼 내용은 윈도우 폰의 실행 모델(Execution Model) 이다.

윈도우 폰 실행 모델 하에서 애플리케이션은 사용자가 네비게이션을 중단할 때 전형적으로 동면상태에 놓인다. 하지만 폰 운영체제에서 동면 상태에 있는 애플리케이션을 종료할 수 있다. 이번 섹션은 이러한 실행 모델아래에서 중단없는 사용자 경험을 제공하는 애플리케이션을 만드는 방법을 설명한다.

▩ 우선 실행 모델이 어떤 것인지 대략 살펴보자.

윈도우 폰 실행 모델에서 애플리케이션이 시작될때 부터 종료될 때 까지 윈도우 폰에서 실행하는 애플리케이션의 수명 주기를 지배한다.

실행 모델은 최종 사용자에게 항상 빠른 응답 경험을 제공하고자 설계되었다.
이런 설계 목적을 달성하기 위해 윈도우 폰은 언제든 하나의 애플리케이션만 포그라운드에서 실행하게 한다. 
폰 운영체제는 애플리케이션이 더 이상 포그라운드에서 상호작용이 없을 때 애플리케이션을 동면 상태로 보낸다. 
포그라운드 애플리케이션을 위한 장치의 가용한 메모리가 좋은 사용자 경험에 불충분한 경우, 운영체제는 동면 상태 애플리케이션을 종료하기 시작한다. 이때  최근에 가장 적게 사용된 애플리케이션이 먼저 종료된다.

애플리케이션이 비활성화되고 다시 활성화될 때 상태를 관리하기 위해 프로그래밍 프레임워크가 제공된다.
이 프레임워크는 애플리케이션이 종료되고 다시 활성화될때에라도 사용자에게는 마치 하나의 애플리케이션 인스턴스인것으로 느끼게 해준다.

또한 실행 모델은 애플리케이션간의 일관된 네비게이션 경험을 사용자에게 제공한다.
윈도우 폰에서 사용자는 설치된 애플리케이션 목록이나 [Start]의 타일에서 애플리케이션을 시작한다.
사용자는 실행중인 애플리케이션의 페이지나 하드웨어 [뒤로가기] 버튼을 사용해 이전에 실행중인 애플리케이션의 스택에서 역방향 탐색을 할 수도 있다. 윈도우 폰 7.5는 하드웨어 [뒤로가기] 버튼을 누른 상태를 잠깐 유지하면 이전에 실행중인 애플리케이션으로 전환하는 기능도 더했다.

다음의 그림은 윈도우 폰 애플리케이션의 수명주기를 나타낸 것이다. 이 그림에서 원은 애플리케이션의 상태다. 사각형은 애플리케이션에서 자체의 상태를 관리해야 하는 애플리케이션이나 페이 수준 이벤트를 보여준다.


위 그림에서 실행 모델 이벤트와 그에 따른 애플리케이션 액션은 다음과 같다.

 이벤트 또는 메서드   애플리케이션 액션
 시작 이벤트  아주 적은양의 코드를 실행한다. 분리된 저장소 접근 같은 자원 집중적인 조작은 수행하지 않는다.
 OnNavigatedFrom 메서드  역방향 탐색이 아니라면, UI 상태를 State 사전에 저장한다.
 비활성화됨 이벤트  애플리케이션 상태를 애플리케이션이 삭제 표시된 것으로 State에 저장한다. 또한 애플리케이션이 종료되는 경우에 별도 저장소에 지속적인 상태를 저장한다. 애플리케이션이 동면상태인 경우 메모리에 있는 애플리케이션 상태를 소멸시키지 않는다.
 활성화됨 이벤트  IsApplicationInstancePreserved를 확인한다. 값이 참이면 아무것도 하지 않는다. 거짓이면 State의 데이터를 사용해 애플리케이션 상태를 복원한다.
 OnNavigatedTo 메서드  해당 페이지가 새로운 인스턴스인지 여부를 확인한다. 새로운 인스턴스가 아니라면, 해당 상태는 자동으로 원래대로 유지된다. 그렇지않고, State에 데이터가 있는 경우, 그 데이터를 사용해 UI를 복원한다.
 종료 이벤트  지속적인 애플리케이션 데이터를 별도 저장소에 저장한다.