백그라운드 작업을 사용하여 앱 지원(HTML)
[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]
이 섹션의 항목에서는 백그라운드 작업으로 트리거에 응답하여 백그라운드에서 고유한 경량 코드를 실행하는 방법을 보여 줍니다. 백그라운드 작업은 OS에서 백그라운드로 실행하는 별도의 JavaScript 파일입니다. 앱이 일시 중단되거나 실행되지 않을 때 백그라운드 작업을 사용하여 기능을 제공할 수 있습니다. JavaScript에서는 타이머를 사용하여 백그라운드 작업을 실행할 수도 있습니다.
백그라운드 작업은 Windows.UI.WebUI.WebUIBackgroundTaskInstance 네임스페이스를 사용하여 백그라운드 작업의 현재 인스턴스에 대한 정보를 가져옵니다. BackgroundTaskBuilder 개체를 사용하여 백그라운드 작업을 등록합니다. 백그라운드 작업 JavaScript 파일은 백그라운드 작업을 등록하는 동안 진입점으로 지정됩니다.
백그라운드 작업을 빠르게 시작하려면 빠른 시작: 백그라운드 작업 만들기 및 등록을 참조하세요.
시스템 이벤트에 대한 백그라운드 작업
SystemTrigger를 사용하여 백그라운드 작업을 등록하면 개발자 앱에서 시스템 생성 이벤트에 응답할 수 있습니다. 앱에서 잠금 화면에 배치하지 않고 다음과 같은 시스템 이벤트 트리거(SystemTriggerType에 정의되어 있음)를 사용할 수 있습니다.
트리거 이름 | 설명 |
---|---|
InternetAvailable |
인터넷을 사용할 수 있게 됩니다. |
NetworkStateChange |
네트워크 변경(예제: 비용 또는 연결 변경)이 발생합니다. |
OnlineIdConnectedStateChange |
계정에 연결된 온라인 ID가 변경됩니다. |
SmsReceived |
설치된 모바일 광대역 장치에 새 SMS 메시지가 수신됩니다. |
TimeZoneChange |
장치의 표준 시간대가 변경됩니다(예제: 시스템이 일광 절약 시간에 맞게 시계를 조정할 때). |
자세한 내용은 백그라운드 작업으로 시스템 이벤트에 응답하는 방법을 참조하세요.
백그라운드 작업의 조건
백그라운드 작업이 트리거된 후에도 조건을 추가하면 해당 작업이 실행되는 시기를 제어할 수 있습니다. 트리거된 백그라운드 작업은 조건이 모두 충족될 때까지 실행되지 않습니다. 다음과 같은 조건(SystemConditionType 열거로 표시됨)을 사용할 수 있습니다.
조건 이름 | 설명 |
---|---|
InternetAvailable | 인터넷을 사용할 수 있어야 합니다. |
InternetNotAvailable | 인터넷을 사용할 수 없어야 합니다. |
SessionConnected | 세션이 연결되어야 합니다. |
SessionDisconnected | 세션 연결이 끊어져야 합니다. |
자세한 내용은 백그라운드 작업 실행 조건을 설정하는 방법을 참조하세요.
응용 프로그램 매니페스트 요구 사항
앱에서 백그라운드 작업을 등록하려면 먼저 응용 프로그램 매니페스트에서 선언해야 합니다. 자세한 내용은 응용 프로그램 매니페스트에서 백그라운드 작업을 선언하는 방법을 참조하세요.
잠금 화면 지원 앱에 대한 백그라운드 작업
앱을 잠금 화면에 배치하면 실시간 정보를 한 눈에 사용자에게 표시할 수 있습니다. 다음과 같은 실시간 트리거를 사용하면 잠금 화면에 있는 앱의 백그라운드에서 경량 사용자 지정 코드를 실행할 수 있습니다.
컨트롤 채널: 백그라운드 작업은 ControlChannelTrigger를 사용하여 연결을 활성 상태로 유지하고 컨트롤 채널에서 메시지를 수신할 수 있습니다. 자세한 내용은 컨트롤 채널 트리거를 사용하는 방법을 참조하세요. (컨트롤 채널 백그라운드 작업은 C# 또는 C++로만 구현할 수 있습니다.) ControlChannelTrigger는 Windows Phone에서 지원되지 않습니다.
타이머: TimeTrigger를 사용하여 백그라운드 작업을 자주(15분마다) 실행하거나 특정 시간에 실행하도록 설정할 수 있습니다. 자세한 내용은 타이머에 따라 백그라운드 작업을 실행하는 방법을 참조하세요.
푸시 알림: 백그라운드 작업은 PushNotificationTrigger에 응답하여 원시 푸시 알림을 수신합니다. 자세한 내용은 원시 알림을 수신하는 방법을 참조하세요.
참고 Windows 스토어 앱 전용입니다. 앱에서 다음과 같은 백그라운드 작업을 사용하려면 사용자가 앱을 잠금 화면에 넣어야 합니다. 앱에서 RequestAccessAsync을 호출하여 잠금 화면 액세스를 요청할 수 있습니다. 그러면 잠금 화면에서 앱을 "허용"하거나 "허용하지 않도록" 요청하는 대화 상자가 제공됩니다. 앱은 잠금 화면 액세스를 한 번만 요청할 수 있습니다. RequestAccessAsync에 대한 이후의 모든 호출은 무시됩니다.
참고
Windows Phone 스토어 앱은 잠금 화면에 고정되지 않아도 지원되는 모든 백그라운드 트리거를 사용할 수 있습니다. 그러나 Phone 앱에서 백그라운드 트리거 형식을 등록하기 전에 RequestAccessAsync을 호출해야 합니다.
Windows Phone 앱을 계속 실행되는 올바로 해제한 후에는 업데이트가 업데이트 중인 후 앱이 시작될 때 RemoveAccess를 호출한 후 RequestAccessAsync를 호출합니다. 자세한 내용은 백그라운드 작업에 대한 지침(Windows 런타임 앱)을 참조하세요.
잠금 화면 지원 앱에 대한 시스템 이벤트 트리거
참고 SystemTriggerType 열거에는 잠금 화면 지원 앱에서만 사용할 수 있는 다음과 같은 시스템 이벤트 트리거가 포함됩니다. 다음과 같은 시스템 이벤트 트리거로 백그라운드 작업을 등록하려면 먼저 잠금 화면에 앱을 배치해야 합니다.
트리거 이름 | 설명 |
---|---|
UserPresent |
사용자가 있게 되면 백그라운드 작업이 트리거됩니다. |
UserAway |
사용자가 없게 되면 백그라운드 작업이 트리거됩니다. |
ControlChannelReset |
컨트롤 채널이 초기화되면 백그라운드 작업이 트리거됩니다. |
SessionConnected |
세션이 연결되면 백그라운드 작업이 트리거됩니다. |
다음 시스템 이벤트 트리거도 잠금 화면 지원 앱용입니다. 이러한 트리거는 앱이 잠금 화면에 없는 경우에도 등록할 수 있으므로 사용자가 앱을 잠금 화면에서 추가하거나 제거한 경우를 인식할 수 있습니다.
트리거 이름 | 설명 |
---|---|
LockScreenApplicationAdded |
앱 타일이 잠금 화면에 추가되었습니다. |
LockScreenApplicationRemoved |
앱 타일이 잠금 화면에서 제거되었습니다. |
백그라운드 작업 리소스 제약 조건
백그라운드 작업은 경량입니다. 백그라운드 실행을 최소로 유지하여 포그라운드 앱 및 배터리 수명을 위한 최적의 사용자 환경을 보장해야 합니다. 이렇게 하려면 백그라운드 작업에 리소스 제약 조건을 적용합니다.
CPU 사용은 다음과 같이 제한됩니다.
CPU 사용 할당량 새로 고침 시간 Windows 앱이 잠금 화면에 없음 1초
2시간
Windows 앱이 잠금 화면에 있음 2초
15분
Windows Phone 앱 2초
15분
배터리(DC 전원)로 실행할 경우 백그라운드 작업에는 네트워크 데이터 사용 한도도 있습니다. 이 한도는 네트워크 인터페이스에서 사용되는 에너지의 양을 기반으로 하므로 장치 및 네트워크 환경에 따라 다르지만 예측할 수 있습니다.
다음 표는 네트워크 데이터 처리량을 구분하여 보여 주며, 1Mbps의 평균 데이터 처리량이 가능한 리소스 제약 WiFi 네트워크를 가정합니다. 정확한 제한을 예측하려면 연결의 평균 Mbps를 곱합니다. 예를 들어 앱은 잠금 화면에 배치된 경우 10Mbps WiFi 연결에서 2시간마다 25MB의 데이터를 사용할 수 있습니다. 예제 WiFi 인터페이스에서는 최소 간섭을 가정합니다.
새로 고침 간격 15분 2시간 매일 데이터 제한(잠금 화면에 있음) 0.469MB 해당 없음 45MB 데이터 제한(잠금 화면에 없음) 해당 없음 0.625MB 7.5MB 참고 장치를 AC 전원에 연결할 경우 네트워크 데이터 사용 제한은 올라가지만 CPU 사용 할당량은 계속 적용됩니다. 마찬가지로 CPU 및 네트워크 리소스 제약 조건은 사용자가 포그라운드에서 앱과 상호 작용하는 동안 앱의 백그라운드 작업에 대해 일시 중단됩니다.
Windows Phone 스토어 앱에 대한 추가 백그라운드 작업 리소스 제약 조건
이전 섹션에 설명된 리소스 제약 조건뿐 아니라 Windows Phone 스토어 앱의 백그라운드 작업에는 다음과 같은 제약 조건도 있습니다.
메모리 제약 조건
Phone 폼 팩터에 대한 리소스 제약 조건 때문에 특히 메모리가 부족한 장치의 경우 Windows Phone 앱의 백그라운드 작업에 대한 메모리 제한이 백그라운드 작업에서 사용할 수 있는 최대 메모리 양을 결정합니다. 백그라운드 작업이 이 제한을 초과할 경우 작업이 즉시 종료됩니다. 메모리 할당은 백그라운드 작업 형식과 작업이 실행되는 장치의 총 시스템 메모리에 따라 달라집니다. 앱을 개발하고 테스트하는 동안 이러한 제한을 고려해야 합니다. 런타임 시 사용량을 조정하기 위해 MemoryManager API를 사용하여 현재 메모리 사용량 및 한도를 쿼리할 수도 있습니다. 다음 표에는 장치의 다양한 총 시스템 메모리 양에 대한 지정된 백그라운드 작업 형식의 메모리 제한(MB)이 나와 있습니다.
백그라운드 작업 형식 | 512MB | 1GB | 2GB 이상 |
---|---|---|---|
위치 | 16 | 30 | 40 |
Bluetooth | 16 | 16 | 16 |
서비스 완료됨 | 10 | 10 | 10 |
기타 백그라운드 작업 | 16 | 30 | 40 |
디버그 중 제한 | 30 | 40 | 50 |
메모리가 부족한 장치에서 백그라운드 작업이 있는 앱의 장치별 제한
512MB의 메모리가 있는 휴대폰에서는 장치에 설치되고 주어진 시간에 백그라운드 작업을 사용할 수 있는 앱 수가 제한됩니다. 이 개수를 초과할 경우 Windows Phone에서 모든 백그라운드 작업을 등록하는 데 필요한 RequestAccessAsync 호출이 실패합니다.
배터리 절약 모드
Windows Phone에서 배터리 절약 모드를 사용하도록 설정하면 장치가 외부 전원에 연결되지 않았으며 배터리가 지정된 전원 잔량보다 적을 경우 백그라운드 작업을 실행할 수 없습니다. 백그라운드 작업을 등록할 수는 있습니다.
유지 관리 트리거
앱에서 유지 관리 트리거를 사용하여 자주(15분마다) 작업을 실행할 수도 있습니다. 잠금 화면에 배치하도록 요청하는 대신 유지 관리 작업은 장치가 AC 전원에 연결된 경우에만 실행됩니다. 자세한 내용은 유지 관리 트리거 사용 방법을 참조하세요.
센서 및 장치에 대한 백그라운드 작업
앱은 DeviceUseTrigger 클래스를 사용하여 백그라운드 작업에서 센서 및 주변 장치에 액세스할 수 있습니다. 데이터 동기화나 모니터링 같이 오래 실행되는 작업에 이 트리거를 사용할 수 있습니다. 시스템 이벤트에 대한 작업과 달리 DeviceUseTrigger 작업은 앱이 포그라운드로 실행되고 조건이 설정되지 않은 경우에만 트리거할 수 있습니다. 실행되는 위치(PC 또는 휴대폰)에 따라 DeviceUseTrigger 백그라운드 작업은 서로 다른 API를 지원하며, 서로 다른 정책이 적용됩니다. 이러한 차이점에 대해 자세히 알아보려면 백그라운드 작업에서 센서 및 장치에 액세스를 참조하세요.
장기 실행 펌웨어 업데이트와 같은 일부 중요한 장치 작업은 DeviceUseTrigger로 수행할 수 없습니다. 이러한 작업은 PC에서만 수행할 수 있으며 DeviceServicingTrigger를 사용하는 권한 있는 앱만 수행할 수 있습니다. 권한 있는 앱은 제조업체가 이러한 작업을 수행할 권한을 부여한 앱입니다. 장치 메타데이터는 장치에 대한 권한 있는 앱(있는 경우)을 지정하는 데 사용합니다. 자세한 내용은 Windows 스토어 장치 앱용 장치 동기화 및 업데이트를 참조하세요.
백그라운드 작업 관리
백그라운드 작업에서는 이벤트 및 로컬 저장소를 사용하여 진행률, 완료 및 취소를 앱에 보고할 수 있습니다. 또한 앱은 백그라운드 작업에서 발생된 예외를 catch할 수 있으며 앱 업데이트 중 백그라운드 작업 등록을 관리할 수 있습니다. 자세한 내용은 다음을 참조하세요.
ServicingComplete 트리거를 사용하는 방법
관련 항목
Windows 8의 멀티태스킹에 대한 개념적 지침
잠금 화면에 대한 UI 지침
관련 백그라운드 작업 지침