내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Windows Phone 8의 빠른 앱 계속

2014-06-18

적용 대상: Windows Phone 8 및 Windows Phone Silverlight 8.1만

 

이 항목에서는 Windows Phone 8 앱에 빠른 앱 다시 시작을 사용하도록 설정하는 방법에 대해 설명합니다. Windows Phone 8 에서는 사용자가 응용프로그램을 벗어난 부분을 탐색할 때 응용프로그램이 일시 중단되고 해당 상태가 메모리에 유지됩니다. 사용자가 뒤로 버튼을 누르거나 작업 전환기를 사용하여 응용프로그램으로 돌아가면 앱 인스턴스가 다시 시작됩니다. 앱이 메모리에 유지되므로 사용자가 앱을 벗어난 부분을 탐색할 때와 동일한 상태로 앱이 신속하게 다시 시작됩니다. 이 프로세스를 FAS(빠른 앱 전환)라고 합니다. 앱이 일시 중단된 경우 사용자가 앱 목록에서 앱 이름을 탭하거나 앱의 기본 시작 타일을 탭하는 등으로 앱을 다시 실행하면 기본적으로 앱의 이전 인스턴스가 종료되고 새 앱 인스턴스가 만들어집니다. 이 프로세스는 일시 중단된 앱을 다시 시작하는 경우보다 더 느리며 다른 사용자 환경을 제공합니다. Windows Phone 8 에서는 일시 중단된 앱 인스턴스가 있을 경우 일시 중단된 인스턴스를 다시 시작하는 대신 앱의 시작 타일 탭하기와 같이 일반적으로 앱을 다시 실행하는 해당 사용자 작업을 요청하는 앱의 기능을 소개합니다. 이 기능을 빠른 다시 시작이라고 합니다. Windows Phone 앱의 수명 주기에 대한 자세한 내용은 Windows Phone 8의 앱 활성화 및 비활성화를 참조하세요.

빠른 다시 시작 사용은 간단합니다. 이 기능을 사용하려면 앱 매니페스트 파일을 약간 변경하면 됩니다. 그러나 빠른 다시 시작을 사용하도록 설정한 경우 앱이 다시 시작될 때 이전에 방문한 페이지의 후방 스택을 관리하는 방법에는 몇 가지 다양한 옵션이 있습니다. 이 항목에서는 다시 시작 환경을 최적화할 수 있는 다양한 방법을 안내합니다.

주의주의:

Direct3D 앱은 새로 시작과 앱 다시 실행을 구분하지 않습니다. 이러한 앱은 항상 이전 환경을 다시 시작합니다. Direct3D with XAML 앱 외에 XAML 및 Direct3D 앱도 일반적인 XAML 앱처럼 빠른 다시 시작에 참여할 수 있습니다.

이 항목에는 다음 단원이 포함되어 있습니다.

 

앱에 빠른 다시 시작을 사용하도록 설정하려면 WMAppManifest.xml에서 DefaultTask 요소에 ActivationPolicy 특성을 추가하고 값을 "Resume"으로 설정합니다. 이 작업의 경우 매니페스트 편집기를 사용하는 대신 앱 매니페스트를 직접 편집해야 합니다. 이렇게 하려면 WMAppManifest.xml을 마우스 오른쪽 버튼으로 클릭하고 연결 프로그램을 클릭한 다음 XML(텍스트) 편집기를 선택합니다.

빠른 다시 시작은 XAML 앱, Direct3D 앱 및 Direct3D with XAML 앱에서 사용할 수 있습니다. 다음 예제에서는 DefaultTask 요소에서 XAML 앱 및 Direct3D 앱을 찾는 방법을 보여 줍니다.

<DefaultTask Name="_default" NavigationPage="MainPage.xaml" ActivationPolicy="Resume"/>

<DefaultTask Name="_default" ImagePath="PhoneDirect3DApp1.exe" ImageParams=""  ActivationPolicy="Resume"/>

빠른 다시 시작을 구현할 때는 휴대폰에서 사용할 수 있는 다른 시작 지점에서 시작된 경우의 앱에 최상인 사용자 환경을 결정해야 합니다.

  • 기본 시작 지점은 사용자를 앱의 기본 페이지로 안내합니다. 기본 시작 지점에는 시작 화면에 있는 앱의 기본 타일, 앱 목록의 앱 이름 또는 게임 허브가 포함됩니다.

  • 딥 링크를 클릭하면 사용자가 앱 내 다른 페이지로 이동합니다. 딥 링크에는 보조 타일, 토스트 알림, 검색이나 사진 허브와 같은 확장성 지점이 포함됩니다.

Windows Phone 앱에서 시스템은 사용자가 앱 내에서 방문한 페이지 기록을 유지 관리하며 사용자가 뒤로 버튼을 사용하여 스택을 통해 이전에 방문한 페이지를 뒤로 탐색할 수 있도록 합니다. 빠른 다시 시작을 사용하면 앱이 다시 시작될 때 시스템에서 시작 지점의 대상에 대한 새 페이지 인스턴스를 만들며 이 페이지는 앱의 기존 페이지 스택 맨 위에 배치됩니다. 이런 경우 앱은 기존 페이지 스택을 지워 새로 만든 페이지만 스택에 유지할 수 있습니다. 이 경우 사용자 환경은 "새로운" 앱 시작의 사용자 환경이 됩니다. 다시 시작된 앱에서 뒤로 탐색할 경우 기록에 페이지가 없으므로 시작 화면이나 이전 앱으로 돌아갑니다. 빠른 다시 시작을 처리하는 다른 방법은 새로 만든 페이지에 대한 탐색을 취소하는 것입니다. 이 경우 사용자는 마지막으로 본 앱 페이지에 도착하게 되고 이전 세션의 페이지 스택은 그대로 유지됩니다. 이는 이전 앱 세션이 단순히 다시 시작된 것처럼 나타납니다.

다음 예제에서는 일반적인 XAML 앱의 다양한 사용자 환경을 고려합니다. XAML 앱은 세 개의 페이지로 구성됩니다.

  1. 기본 페이지

  2. 페이지 1 – 기본 페이지에서 링크를 통해 액세스할 수 있음

  3. 페이지 2 – 시작 화면에 고정된 보조 타일에서 액세스할 수 있음

사용자가 앱을 시작하고 기본 페이지에 도착한 다음 페이지 1로 이동하고 시작 버튼을 누른다고 가정합니다. 다음 그림에서는 앱의 현재 페이지 스택을 보여 줍니다.

Fast Resume Series 1

사용자가 휴대폰을 사용하고 특정 지점에 앱의 기본 타일을 사용하여 시작 화면에서 앱을 다시 시작한다고 가정합니다. 이때 시스템은 타일과 관련된 URI에 대한 새 페이지(이 경우 기본 페이지)를 만들고 해당 페이지를 페이지 스택의 맨 위에 배치합니다. 다음은 현재 페이지 스택의 모양입니다.

Fast Resume Series 2

현재 사용자에게 표시되는 페이지는 앱의 기본 페이지입니다. 뒤로 버튼을 누르면 페이지 1을 통과한 다음 다시 기본 페이지를 통과한 후 뒤로 버튼을 누르면 앱이 종료됩니다. 이는 사용자가 의도한 동작이 아닙니다. 사용자는 시작 화면에서 앱을 시작하기만 했고 기본 페이지가 표시되었으므로 뒤로 버튼을 한 번 누르면 시작 화면으로 돌아간다고 예상합니다.

이때 최상의 앱 사용자 환경을 결정해야 합니다. 예를 들어 사용자가 앱을 종료한 이후 짧은 시간이 경과하면 앱이 다시 시작될 때 마지막으로 본 페이지가 표시되고 사용자가 앱을 종료한 후 긴 시간이 경과하면 기본 페이지가 표시되도록 할지를 결정할 수 있습니다.

"새 인스턴스" 환경

'새로운' 환경을 제공하려면 사용자에게 기본 페이지가 표시되기 전에 앱이 다시 시작될 때 페이지 스택에서 모든 페이지를 제거합니다. 다음 다이어그램에서는 이전에 방문한 페이지가 페이지 스택에서 제거되었으며 뒤로 버튼을 누르면 앱이 종료됨을 확인할 수 있습니다.

Fast Resume Series 3

"다시 시작" 환경

앱이 다시 시작될 때 이전 환경을 다시 시작하려면 기본 페이지 탐색을 취소합니다. 이런 식으로, 사용자가 의도한 대로 사용자에게 페이지 1이 표시되고 뒤로 버튼을 누르면 기본 페이지로 이동합니다.

Fast Resume Series 4

앱이 시작 화면의 기본 타일과 같은 기본 시작 지점에서 시작된 경우에는 이전 환경을 다시 시작하는 것이 가장 적합합니다. 딥 링크의 경우 앱에서 페이지 스택을 지우는 것이 더 적합합니다. 다음 예제에서는 그 이유를 보여 줍니다.

사용자가 앱을 시작하고 페이지 1로 이동한 다음 시작 버튼을 누르는 원본 시나리오를 고려해야 합니다. 다음 다이어그램에서는 앱의 페이지 스택을 보여 줍니다.

Fast Resume Series 1

나중에 사용자가 앱을 다시 시작하며 이번에는 시작 화면의 보조 타일에서 시작한다고 가정합니다. 타일의 URI는 페이지 2를 가리키는 딥 링크입니다. 이제 사용자에게 페이지 2가 표시됩니다. 뒤로 버튼을 누르면 페이지 1을 통과한 다음 다시 기본 페이지를 통과한 후 앱이 종료됩니다. 또한 사용자가 의도한 동작이 아닙니다. 이 시나리오에서는 페이지 2를 탐색하기 전에 응용프로그램에서 페이지 스택을 지우는 것이 바람직합니다.

Fast Resume Series 6

응용프로그램이 다시 시작되면 NavigationMode 값이 ResetRootFrame에서 Navigated 이벤트가 발생합니다. Reset 값은 앱이 다시 실행되고 있음을 신호로 알립니다. 이때 앱은 페이지 스택이 지워질 때까지 RootFrame에서 RemoveBackEntry()를 호출하여 페이지 스택을 지울 수 있습니다.

while (RootFrame.RemoveBackEntry() != null);

다음으로 NewNavigationMode 값을 사용하여 새 페이지를 만들고 탐색합니다.

응용프로그램이 다시 시작되면 NavigationMode 값이 ResetRootFrame에서 Navigated 이벤트가 발생합니다. 앱에서 이전 페이지를 지울 필요가 없는 경우 페이지 스택의 맨 위에 있는 페이지는 NavigationMode 값이 ResetOnNavigatedTo를 받은 다음 NavigationMode 값이 NewOnNavigatedFrom을 받습니다. 이때 앱은 RootFrame의 Navigating 이벤트에 있는 NavigatingCancelEventArgs 매개 변수에서 e.Cancel = true를 설정하여 새 페이지 탐색을 취소할 수 있습니다.

앱이 페이지 스택 맨 위에 있는 페이지와 동일한 URI를 사용하여 다시 실행되면 시스템에서 새 페이지를 만들지 않고 대신 새로 고쳐야 함을 맨 위 페이지에 신호로 알립니다. 페이지 스택을 지우거나 탐색을 취소할 필요가 없습니다.

이 경우 페이지 스택의 맨 위에 있는 페이지는 두 번 탐색됩니다. 한 번은 NavigationMode 값으로 Reset을 사용하고 두 번째는 NavigationMode 값으로 Refresh를 사용합니다. 이 두 번째 탐색이 수행되면 클라우드에서 업데이트된 데이터 아래로 끌기와 같이 앱에서 상태를 새로 고칠 수 있습니다.

빠른 다시 시작을 구현하고 페이지 스택 관리를 보여 주는 샘플 앱을 보거나 다운로드하려면 빠른 다시 시작 페이지 스택 샘플을 참조하세요.

표시:
© 2014 Microsoft