앱 일시 중단 방법(HTML)
[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]
시스템에서 Windows 런타임 앱을 일시 중단할 때 중요한 응용 프로그램 데이터를 저장하는 방법을 배웁니다. 시스템에서 앱을 일시 중단하면 나중에 경고 없이 앱을 종료할 수 있습니다. 앱이 다시 시작될 때 해당 상태를 복원할 수 있도록 앱에 사용자의 현재 상태를 저장하는 것이 중요합니다. 사용자는 앱이 백그라운드에서 일시 중단되고 종료되었다는 사실을 알지 못합니다.
다음 단계에서는 checkpoint 이벤트를 등록하고, 일부 기본 앱 상태를 저장하는 데 사용하는 방법을 보여 줍니다.
지침
단계 1: checkpoint 이벤트 등록
checkpoint 이벤트를 전역 범위에서 등록합니다. 이 이벤트는 시스템에서 앱을 일시 중단하고 있음을 나타냅니다. 앱이 일시 중단된 후에 시스템은 시스템 리소스 확보를 위해 앱을 종료할 수 있습니다. 따라서 checkpoint 이벤트 중에 앱 데이터를 저장해야 합니다.
var app = WinJS.Application;
app.addEventListener("checkpoint", checkpointHandler);
단계 2: 일시 중단 전에 응용 프로그램 데이터 저장
앱에서 checkpoint 이벤트를 처리하면, checkpoint 이벤트용 처리기 함수에서 중요한 응용 프로그램 데이터를 저장할 기회가 생깁니다. 간단한 응용 프로그램 데이터를 동기적으로 저장하기 위해 앱에서 sessionState 개체를 사용할 수 있습니다. sessionState 개체는 종료 이후 활성화 중에 앱이 액세스할 수 있도록 데이터를 유지합니다.
function checkpointHandler(eventArgs)
{
var stateObject = new Object();
// TODO: Populate the state object with app data
// Save the state object to the session object
app.sessionState.stateObject = stateObject;
}
단계 3: 단독 리소스 및 파일 핸들 해제
앱은 checkpoint 이벤트를 처리할 때 단독 리소스와 파일 핸들을 해제할 수도 있습니다. 단독 리소스의 예로는 카메라, I/O 장치, 외부 장치 및 네트워크 리소스가 있습니다. 단독 리소스와 파일 핸들을 명시적으로 해제하면 앱이 해당 리소스와 파일 핸들을 사용하지 않는 동안 다른 앱이 액세스할 수 있습니다. 앱이 종료 후 활성화되면 단독 리소스와 파일 핸들을 열어야 합니다.
설명
사용자가 다른 앱 또는 데스크톱으로 전환할 때마다 시스템에서 앱을 일시 중단합니다. 사용자가 다시 돌아올 때마다 시스템에서 앱을 다시 시작합니다. 시스템에서 앱을 다시 시작할 때, 변수와 데이터 구조의 콘텐츠는 시스템에서 앱을 일시 중단하기 전과 동일합니다. 앱은 중단되었던 곳에서 정확히 복원되므로, 사용자에게는 앱이 배경에서 실행되고 있었던 것처럼 보입니다.
앱이 일시 중단된 동안 시스템은 앱과 데이터를 메모리에 유지하려고 합니다. 그러나 앱이 일시 중단된 후 OS에서 여러 가지 이유로 앱을 종료할 수 있습니다. 몇 가지 예로는 사용자가 수동으로 앱을 닫거나, 사용자가 로그아웃하거나, 시스템 리소스가 부족한 경우를 들 수 있습니다. 사용자가 종료된 앱으로 다시 돌아오면, 앱은 activated 이벤트를 수신하며 sessionState 개체가 정의되었는지 여부를 확인해야 합니다. 개체가 정의되었으면 앱은 해당 데이터를 로드해야 합니다.
시스템은 앱이 종료되었을 때 앱에게 알리지 않으므로, 앱은 일시 중단될 때 응용 프로그램 데이터를 저장하고 단독 리소스와 파일 핸들을 해제하며 앱이 일시 중단되었다가 다시 시작되거나 종료되었다가 활성화될 때 이 리소스와 파일 핸들을 복원해야 합니다.
참고 앱이 일시 중단 상태에서 비동기 작업을 수행해야 할 경우 작업이 완료될 때까지 일시 중단 종료를 지연해야 합니다. checkpoint 이벤트 인수 세부 정보 속성의 setPromise 메서드를 사용하여 약속이 완료될 때까지 일시 중단 완료를 지연할 수 있습니다.
참고 Windows 8.1 및 Windows Phone에서 시스템 응답을 향상시키기 위해 일시 중단 시 앱에 리소스에 대한 낮은 우선 순위 액세스 권한이 부여됩니다. 이 새 우선 순위를 지원하기 위해 일시 중단 작업 제한 시간이 확장되어 앱에 Windows의 일반 우선 순위에 대한 5초 제한 시간과 Windows Phone의 1-10초 제한 시간에 해당하는 제한 시간이 부여됩니다. 이 제한 시간은 확장하거나 변경할 수 없습니다.
Microsoft Visual Studio를 사용한 디버그에 대한 참고 사항: Visual Studio에서는 Windows가 디버거에 연결되어 있는 앱을 일시 중단하지 못하도록 합니다. 이렇게 하는 것은 앱이 실행되는 동안 Visual Studio 디버그 UI를 사용자가 볼 수 있도록 하기 위한 것입니다. 앱을 디버그할 때에는 Visual Studio를 사용하여 앱을 일시 중단 이벤트로 보낼 수 있습니다. 디버그 위치 도구 모음이 표시되는지 확인한 다음 일시 중단 아이콘을 클릭합니다.
전체 예제
앱 수명 주기 이벤트 처리 방법을 보여 주는 전체 코드 예제를 보려면 WinJS를 사용한 앱 활성화 및 일시 중단 샘플 및 WRL을 사용하는 앱 활성화, 다시 시작 및 일시 중단 샘플을 참조하세요.
관련 항목
작업
개념
지침
참조