언어: HTML | XAML

백그라운드 작업을 사용하여 앱 지원(XAML)

Applies to Windows and Windows Phone

이 섹션의 항목에서는 백그라운드 작업으로 트리거에 응답하여 백그라운드에서 고유한 경량 코드를 실행하는 방법을 보여 줍니다. 백그라운드 작업은 OS에서 백그라운드로 실행하는 경량 클래스입니다. 앱이 일시 중단되거나 실행되지 않을 때 백그라운드 작업을 사용하여 기능을 제공할 수 있습니다. VOIP, 메일 및 IM 같은 실시간 통신 앱에 백그라운드 작업을 사용할 수도 있습니다.

백그라운드 작업은 IBackgroundTask 인터페이스를 구현하는 별도의 클래스입니다. BackgroundTaskBuilder 클래스를 사용하여 백그라운드 작업을 등록합니다. 클래스 이름은 백그라운드 작업을 등록할 때 진입점을 지정하는 데 사용됩니다.

백그라운드 작업을 빠르게 시작하려면 빠른 시작: 백그라운드 작업 만들기 및 등록을 참조하세요.

시스템 이벤트에 대한 백그라운드 작업

SystemTrigger 클래스를 사용하여 백그라운드 작업을 등록하면 개발자 앱에서 시스템 생성 이벤트에 응답할 수 있습니다. 앱에서 잠금 화면에 배치하지 않고 다음과 같은 시스템 이벤트 트리거(SystemTriggerType에 정의되어 있음)를 사용할 수 있습니다.

트리거 이름설명

InternetAvailable

인터넷을 사용할 수 있게 됩니다.

NetworkStateChange

네트워크 변경(예: 비용 또는 연결 변경)이 발생합니다.

OnlineIdConnectedStateChange

계정에 연결된 온라인 ID가 변경됩니다.

SmsReceived

설치된 모바일 광대역 장치에 새 SMS 메시지가 수신됩니다.

TimeZoneChange

장치의 표준 시간대가 변경됩니다(예: 시스템이 일광 절약 시간에 맞게 시계를 조정할 때).

 

자세한 내용은 백그라운드 작업으로 시스템 이벤트에 응답하는 방법을 참조하세요.

백그라운드 작업의 조건

백그라운드 작업이 트리거된 후에도 조건을 추가하면 해당 작업이 실행되는 시기를 제어할 수 있습니다. 트리거된 백그라운드 작업은 조건이 모두 충족될 때까지 실행되지 않습니다. 다음과 같은 조건(SystemConditionType 열거로 표시됨)을 사용할 수 있습니다.

조건 이름설명
InternetAvailable

인터넷을 사용할 수 있어야 합니다.

InternetNotAvailable

인터넷을 사용할 수 없어야 합니다.

SessionConnected

세션이 연결되어야 합니다.

SessionDisconnected

세션 연결이 끊어져야 합니다.

UserNotPresent

사용자가 없어야 합니다.

UserPresent

사용자가 있어야 합니다.

 

자세한 내용은 백그라운드 작업 실행 조건을 설정하는 방법을 참조하세요.

응용 프로그램 매니페스트 요구 사항

앱에서 백그라운드 작업을 등록하려면 먼저 응용 프로그램 매니페스트에서 선언해야 합니다. 자세한 내용은 응용 프로그램 매니페스트에서 백그라운드 작업을 선언하는 방법을 참조하세요.

잠금 화면 지원 앱에 대한 백그라운드 작업

앱을 잠금 화면에 배치하면 실시간 정보를 한 눈에 사용자에게 표시할 수 있습니다. 다음과 같은 실시간 트리거를 사용하면 잠금 화면에 있는 앱의 백그라운드에서 경량 사용자 지정 코드를 실행할 수 있습니다.

컨트롤 채널:  백그라운드 작업은 ControlChannelTrigger를 사용하여 연결을 활성 상태로 유지하고 컨트롤 채널에서 메시지를 수신할 수 있습니다. 자세한 내용은 컨트롤 채널 트리거를 사용하는 방법을 참조하세요. ControlChannelTrigger는 Windows Phone에서 지원되지 않습니다.

타이머:  TimeTrigger를 사용하여 백그라운드 작업을 Windows에서는 15분 간격, Windows Phone에서는 30분 간격마다 자주 실행하거나 특정 시간에 실행하도록 설정할 수 있습니다. 자세한 내용은 타이머에 따라 백그라운드 작업을 실행하는 방법을 참조하세요.

푸시 알림:  백그라운드 작업은 PushNotificationTrigger에 응답하여 원시 푸시 알림을 수신합니다. 자세한 내용은 원시 알림을 수신하는 방법을 참조하세요.

  • Applies to Windows

앱에서 다음과 같은 백그라운드 작업을 사용하려면 사용자가 앱을 잠금 화면에 넣어야 합니다. 앱에서 RequestAccessAsync를 호출하여 잠금 화면 액세스를 요청할 수 있습니다. 그러면 잠금 화면에서 앱을 "허용"하거나 "허용하지 않도록" 요청하는 대화 상자가 제공됩니다. 앱은 잠금 화면 액세스를 한 번만 요청할 수 있습니다. RequestAccessAsync에 대한 이후의 모든 호출은 무시됩니다.

  • Applies to Windows Phone

Windows Phone 앱은 잠금 화면에 고정되지 않아도 지원되는 모든 백그라운드 트리거를 사용할 수 있습니다. 그러나 Phone 앱에서 백그라운드 트리거 유형을 등록하기 전에 RequestAccessAsync를 호출해야 합니다.

잠금 화면 지원 앱에 대한 시스템 이벤트 트리거

참고  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.469 MB해당 없음45 MB
    데이터 제한(잠금 화면에 없음)해당 없음0.625 MB7.5 MB

     

    참고  장치를 AC 전원에 연결할 경우 네트워크 데이터 사용 제한은 올라가지만 CPU 사용 할당량은 계속 적용됩니다. 마찬가지로 CPU 및 네트워크 리소스 제약 조건은 사용자가 포그라운드에서 앱과 상호 작용하는 동안 앱의 백그라운드 작업에 대해 일시 중단됩니다.

Windows Phone에 대한 추가 백그라운드 작업 리소스 제약 조건

이전 섹션에 설명된 리소스 제약 조건뿐 아니라 Windows Phone의 백그라운드 작업에는 다음과 같은 제약 조건도 있습니다.

메모리 제약 조건

Phone 폼 팩터에 대한 리소스 제약 조건 때문에 특히 메모리가 부족한 장치의 경우 Windows Phone 앱의 백그라운드 작업에 대한 메모리 제한이 백그라운드 작업에서 사용할 수 있는 최대 메모리 양을 결정합니다. 백그라운드 작업이 이 제한을 초과할 경우 작업이 즉시 종료됩니다. 메모리 할당은 백그라운드 작업 유형과 작업이 실행되는 장치의 총 시스템 메모리에 따라 달라집니다. 앱을 개발하고 테스트하는 동안 이러한 제한을 고려해야 합니다. 런타임 시 사용량을 조정하기 위해 MemoryManager API를 사용하여 현재 메모리 사용량 및 한도를 쿼리할 수도 있습니다. 다음 표에는 장치의 다양한 총 시스템 메모리 양에 대한 지정된 백그라운드 작업 유형의 메모리 제한(MB)이 나와 있습니다.

백그라운드 작업 유형512MB1 GB2GB 이상
위치163040
Bluetooth161616
서비스 완료됨101010
기타 백그라운드 작업163040
디버그 중 제한304050

 

메모리가 부족한 장치에서 백그라운드 작업이 있는 앱의 장치별 제한

512MB의 메모리가 있는 휴대폰에서는 장치에 설치되고 주어진 시간에 백그라운드 작업을 사용할 수 있는 앱 수가 제한됩니다. 이 개수를 초과할 경우 Windows Phone에서 모든 백그라운드 작업을 등록하는 데 필요한 RequestAccessAsync 호출이 실패합니다.

배터리 절약 모드

Windows Phone에서 배터리 절약 모드를 사용하도록 설정하면 장치가 외부 전원에 연결되지 않았으며 배터리가 지정된 전원 잔량보다 적을 경우 백그라운드 작업을 실행할 수 없습니다. 백그라운드 작업을 등록할 수는 있습니다.

백그라운드 작업 리소스는 실시간 통신을 보장합니다.

리소스 할당량으로 인해 실시간 통신 기능이 방해 받지 않도록 ControlChannelTriggerPushNotificationTrigger를 사용하는 백그라운드 작업은 모든 실행 중인 작업에 대해 보장된 리소스 할당량(CPU 및 네트워크)을 수신합니다. 리소스 할당량 및 네트워크 데이터 사용 제약 조건은 위에서 설명한 대로, 네트워크 인터페이스의 전원 사용에 따라 변경되지 않고 백그라운드 작업에 대해 동일하게 유지됩니다.

앱에서 ControlChannelTriggerPushNotificationTrigger 백그라운드 작업에 대해 보장된 리소스 할당량을 가져오기 위해 별도의 작업을 수행할 필요는 없습니다. 시스템에서는 항상 이러한 작업을 중요 백그라운드 작업으로 처리합니다.

유지 관리 트리거

앱에서 유지 관리 트리거를 사용하여 자주(15분마다) 작업을 실행할 수도 있습니다. 잠금 화면에 배치하도록 요청하는 대신 유지 관리 작업은 장치가 AC 전원에 연결된 경우에만 실행됩니다. 자세한 내용은 유지 관리 트리거 사용 방법을 참조하세요.

업데이트 작업

Windows Phone만 해당. 업데이트 작업은 사용자가 앱을 최신 버전으로 업데이트한 후 실행되는 백그라운드 작업입니다. 이 작업은 사용자가 먼저 앱을 시작할 필요 없이 푸시 알림 채널을 설정하는 등의 초기화 작업을 앱에서 수행할 수 있도록 해줍니다. 자세한 내용은 업데이트 작업을 사용하는 방법을 참조하세요.

센서 및 장치에 대한 백그라운드 작업

앱은 DeviceUseTrigger 클래스를 사용하여 백그라운드 작업에서 센서 및 주변 장치에 액세스할 수 있습니다. 데이터 동기화나 모니터링 같이 오래 실행되는 작업에 이 트리거를 사용할 수 있습니다. 시스템 이벤트에 대한 작업과 달리 DeviceUseTrigger 작업은 앱이 포그라운드로 실행되고 조건이 설정되지 않은 경우에만 트리거할 수 있습니다. 실행되는 위치(PC 또는 휴대폰)에 따라 DeviceUseTrigger 백그라운드 작업은 서로 다른 API를 지원하며, 서로 다른 정책이 적용됩니다. 이러한 차이점에 대해 자세히 알아보려면 백그라운드 작업에서 센서 및 장치에 액세스를 참조하세요.

장기 실행 펌웨어 업데이트와 같은 일부 중요한 장치 작업은 DeviceUseTrigger로 수행할 수 없습니다. 이러한 작업은 PC에서만 수행할 수 있으며 DeviceServicingTrigger를 사용하는 권한 있는 앱만 수행할 수 있습니다. 권한 있는 앱은 제조업체가 이러한 작업을 수행할 권한을 부여한 앱입니다. 장치 메타데이터는 장치에 대한 권한 있는 앱(있는 경우)을 지정하는 데 사용합니다. 자세한 내용은 Windows 스토어 장치 앱용 장치 동기화 및 업데이트를 참조하세요.

백그라운드 작업 관리

백그라운드 작업에서는 이벤트 및 로컬 저장소를 사용하여 진행률, 완료 및 취소를 앱에 보고할 수 있습니다. 또한 앱은 백그라운드 작업에서 발생된 예외를 catch할 수 있으며 앱 업데이트 중 백그라운드 작업 등록을 관리할 수 있습니다. 자세한 내용은 다음을 참조하세요.

취소된 백그라운드 작업을 처리하는 방법

보류 중인 백그라운드 작업 목록을 가져오는 방법

백그라운드 작업 진행 및 완료를 모니터링하는 방법

ServicingComplete 트리거를 사용하는 방법

관련 항목

Windows 8의 멀티태스킹에 대한 개념적 지침
실행, 다시 시작 및 멀티태스킹
잠금 화면에 대한 UI 지침
잠금 화면에 타일 표시
잠금 화면 타일에 대한 지침 및 검사 목록
관련 백그라운드 작업 지침
백그라운드 작업에 대한 지침 및 검사 목록
How to debug a background task
Windows 스토어 앱에서 일시 중단, 다시 시작 및 백그라운드 이벤트를 트리거하는 방법(디버깅 시)
백그라운드 작업에서 센서 및 장치에 액세스
Windows 스토어 장치 앱의 장치 동기화 및 업데이트

 

 

표시:
© 2014 Microsoft