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

Windows Phone 8의 백그라운드 에이전트

2014-06-18

적용 대상: Windows Phone 8 및 Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

 

응용프로그램은 예약된 작업 및 백그라운드 에이전트를 통해 응용프로그램이 포그라운드에서 실행되고 있지 않을 때도 백그라운드에서 코드를 실행할 수 있습니다. 예약된 각 작업 유형은 서로 다른 후순위 처리 시나리오에 사용되므로, 동작과 제약 조건도 서로 다릅니다. 이 항목에서는 예약된 작업의 일정, 기간 및 제한에 대해 설명합니다.

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

 

예약된 작업의 유형은 다음과 같습니다. ScheduledTaskScheduledAction에서 파생됩니다. 백그라운드에서 실행되는 코드는 ScheduledTaskAgent에서 파생되는 클래스에 추가되며, 이 클래스는 BackgroundAgent에서 파생됩니다.

예약된 작업 유형

설명

PeriodicTask

정기 에이전트는 일정하게 되풀이되는 간격으로 잠시 동안 실행됩니다. 이 작업 유형의 일반적인 시나리오로는 단말기 위치 업로드, 소량의 데이터 동기화 작업 수행 등이 있습니다.

ResourceIntensiveTask

리소스를 많이 사용하는 에이전트는 휴대폰이 프로세서 작업, 전원 및 네트워크 연결과 관련된 특정 요구 사항을 충족하는 경우 비교적 오랫동안 실행됩니다. 이 작업 유형의 일반적인 시나리오로는 사용자가 휴대폰을 사용하지 않는 동안 휴대폰에 데이터를 대량 동기화하는 작업이 있습니다.

응용프로그램은 백그라운드 에이전트를 하나만 포함할 수 있습니다. 이 에이전트는 PeriodicTaskResourceIntensiveTask 중 하나 또는 이 두 가지로 모두 등록될 수 있습니다. 에이전트가 실행되는 일정은 에이전트가 등록된 작업 유형에 따라 달라집니다. 일정 세부 정보는 이 항목 뒷부분에서 설명합니다. 에이전트 인스턴스는 한 번에 하나만 실행됩니다.

에이전트의 코드는 응용프로그램이 BackgroundAgent로부터 상속하는 클래스에서 구현됩니다. 에이전트가 실행되면 운영 체제는 OnInvoke(ScheduledTask)를 호출합니다. 이 메서드에서 응용프로그램은 현재 실행 중인 ScheduledTask 유형을 확인하고 적절한 작업을 수행할 수 있습니다. 에이전트는 작업을 완료하면 NotifyComplete() 또는 Abort()를 호출하여 운영 체제에서 작업이 완료되었음을 인식할 수 있도록 해야 합니다. 작업에 성공한 경우 NotifyComplete를 사용해야 합니다. 필요한 서버를 사용할 수 없는 등의 이유로 에이전트가 해당 작업을 수행할 수 없는 경우에는 Abort를 호출해야 합니다. 그러면 IsScheduled 속성이 false로 설정됩니다. 포그라운드 응용프로그램은 실행 시 이 속성을 확인하여 Abort 호출 여부를 파악할 수 있습니다.

모든 예약된 작업에는 다음과 같은 제약 조건이 적용됩니다.

제약 조건

설명

지원되지 않는 API

특정 API 집합은 예약된 작업에서 사용할 수 없습니다. 이러한 API를 사용하면 런타임에 예외가 발생되거나, 응용프로그램을 스토어 에 전송하는 동안 인증에 실패합니다. 제한되는 API 목록은 Windows Phone 8의 백그라운드 에이전트에 지원되지 않는 API를 참조하세요.

메모리 사용 한도

정기 에이전트와 리소스를 많이 사용하는 에이전트는 메모리가 1GB 이상인 단말기에서 언제든지 최대 20MB의 메모리를 사용할 수 있습니다. 저메모리 단말기 의 경우는 제한이 11MB입니다. 오디오 에이전트에는 아래 설명과 같은 메모리 한도가 있습니다. 예약된 작업이 이 메모리 한도를 초과하면 즉시 종료됩니다.

두 배경 오디오 에이전트 유형 모두 같은 프로세스에서 호스트되며, 다음과 같은 최대 메모리 제한도 동일합니다.

  1. Windows Phone 8 업데이트 3 가 설치된 Windows Phone 8(8.0.10492 이상 버전)의 경우 25MB

  2. Windows Phone 8 업데이트 3 가 설치되지 않은 Windows Phone 8(8.0.10492 미만 버전)의 경우 20MB

  3. Windows Phone OS 7.1 의 경우 15MB

디버거에서 실행하는 경우 메모리 및 시간 초과 제한이 일시 중단됩니다. ApplicationMemoryUsageLimit API를 사용하여 포그라운드 응용프로그램과 백그라운드 에이전트의 메모리 제한을 쿼리할 수 있습니다.

2주마다 일정 재조정 필요

ScheduledTask 개체의 ExpirationTime 속성을 사용해 작업이 더 이상 실행되지 않는 시간을 설정합니다. 이 값은 Add(ScheduledAction) 메서드를 사용해 작업을 예약한 시간에서 2주 이내의 시간으로 설정해야 합니다. 작업과 연결된 응용프로그램은 포그라운드에서 실행될 때 작업 일정을 재조정하고 만료 시간을 현재 시간에서 2주 이후까지로 초기화할 수 있습니다.

응용프로그램의 백그라운드 에이전트가 만료되지 않거나 자동으로 갱신되는 경우도 있습니다.

  • 앱의 타일이 휴대폰 시작 화면에 고정된 경우 백그라운드 에이전트가 Update(ShellTileData)를 호출하여 타일을 업데이트할 때마다 백그라운드 에이전트 일정의 만료 시간이 2주로 자동 연장됩니다. 자세한 내용은 Windows Phone 8의 타일을 참조하세요.

  • 사용자가 앱을 선택하여 잠금 화면에 알림을 표시하는 경우, 백그라운드 에이전트가 Update(ShellTileData)를 호출하여 잠금 화면을 업데이트할 때마다 백그라운드 에이전트 일정의 만료 시간이 2주로 자동 연장됩니다. 자세한 내용은 Windows Phone 8의 잠금 화면 알림을 참조하세요.

  • 앱에서 리소스를 많이 사용하는 에이전트를 통해 사진을 자동 업로드하는 경우, 사용자가 사진+카메라 설정 페이지에서 앱에 이 기능을 사용하도록 설정했으면 리소스를 많이 사용하는 에이전트 일정이 만료되지 않습니다. 자세한 내용은 Windows Phone 8용 자동 업로드 앱을 참조하세요.

연속해서 두 번 충돌한 이후 에이전트 예약이 취소됨

메모리 할당량이 초과되거나 기타 처리할 수 없는 예외가 발생하여 정기 에이전트와 리소스를 많이 사용하는 에이전트가 두 번 연속해서 종료되면 에이전트 예약이 취소됩니다. 이 경우 포그라운드 응용프로그램이 에이전트를 다시 예약해야 합니다.

정기 에이전트의 일정, 기간 및 일반 제약 조건은 다음과 같습니다.

제약 조건

설명

예약 간격: 30분

정기 에이전트는 대개 30분마다 실행됩니다. 배터리 수명을 최적화하기 위해 정기 에이전트가 다른 백그라운드 프로세스에 맞춰 실행될 수 있으므로, 실행 시간에 10분까지 차이가 발생할 수 있습니다.

예약 기간: 25초

정기 에이전트는 대개 25초 동안 실행됩니다. 그러나 제약 조건이 달라서 에이전트가 조기에 종료될 수 있습니다.

배터리 절약 모드를 사용하는 경우 실행이 차단될 수 있음

배터리 절약 모드는 배터리 수명을 우선적으로 고려해야 함을 나타내기 위해 사용자가 단말기에서 사용하도록 설정할 수 있는 옵션입니다. 이 모드를 사용하도록 설정하면 간격이 경과해도 정기 에이전트가 실행되지 않을 수 있습니다.

단말기별 정기 에이전트 제한

단말기의 배터리 수명을 최대화하기 위해 휴대폰에서 예약할 수 있는 정기 에이전트의 수에는 하드 한도가 적용됩니다. 이 한도는 단말기 구성별로 다르며, 최소값은 6입니다. 하드 한도보다 작은 다른 한도도 있는데, 이 한도를 초과하면 백그라운드 에이전트가 여러 개 실행되고 있어 배터리가 더 빨리 소모된다는 경고가 사용자에게 표시됩니다.

주의주의:
단말기 한도가 초과되었는데 정기 백그라운드 에이전트를 추가하려고 하면 Add(ScheduledAction) 호출에서 InvalidOperationException이 발생합니다. 이처럼 정기 에이전트에 대한 단말기별 한도 값이 작기 때문에 응용프로그램에서 이 예외가 발생할 가능성이 높습니다. 따라서 응용프로그램이 충돌하지 않도록 정기 에이전트를 추가할 때 이 예외를 catch해야 합니다. 이 작업의 예제 코드는 Windows Phone 8의 백그라운드 에이전트 모범 사례를 참조하세요.

리소스를 많이 사용하는 에이전트의 일정, 기간 및 일반 제약 조건은 다음과 같습니다.

제약 조건

설명

기간: 10분

리소스를 많이 사용하는 에이전트는 대개 10분 동안 실행됩니다. 그러나 제약 조건이 달라서 에이전트가 조기에 종료될 수 있습니다.

외부 전원 필요

리소스를 많이 사용하는 에이전트는 단말기가 외부 전원에 연결되어 있지 않으면 실행되지 않습니다.

비셀룰러 연결 필요

리소스를 많이 사용하는 에이전트는 단말기가 Wi-Fi 또는 PC 연결을 통해 네트워크에 연결되어 있지 않으면 실행되지 않습니다.

최소 배터리 전원

리소스를 많이 사용하는 에이전트는 단말기 배터리 전원이 90% 넘게 있지 않으면 실행되지 않습니다.

단말기 화면 잠금 필요

리소스를 많이 사용하는 에이전트는 단말기 화면이 잠겨 있지 않으면 실행되지 않습니다.

전화 통화 중에는 실행 불가

리소스를 많이 사용하는 에이전트는 전화 통화를 하고 있는 동안에는 실행되지 않습니다.

셀룰러 네트워크로 변경할 수 없음

리소스를 많이 사용하는 에이전트가 MobileBroadbandGSM() 또는 MobileBroadbandCDMA()를 지정하여 AssociateToNetworkInterface(Socket, NetworkInterfaceInfo)를 호출하려고 하면 메서드 호출에 실패할 수 있습니다.

단말기가 필요한 모든 조건을 충족해 리소스를 많이 사용하는 에이전트가 실행되는 상태가 되었다가 특정 조건을 충족하지 않는 상태로 변경되면 리소스를 많이 사용하는 에이전트가 즉시 종료됩니다.

주의주의:

리소스를 많이 사용하는 에이전트를 실행하려면 단말기에서 특정 제약 조건이 충족되어야 하므로, 특정 단말기에서는 에이전트가 실행되지 않을 수 있습니다. 예를 들어 사용자가 Wi-Fi나 PC에 액세스할 수 없으면 비셀룰러 연결을 사용할 수 없어 해당 단말기에서 리소스를 많이 사용하는 에이전트가 실행되지 않습니다. 또한 리소스를 많이 사용하는 에이전트는 한 번에 하나씩 실행되므로, 이러한 에이전트를 사용하는 응용프로그램을 단말기에 많이 설치하면 에이전트 실행 가능성이 더욱 낮아집니다. 응용프로그램을 디자인할 때 이 점을 고려해야 합니다.

Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2014 Microsoft