백그라운드 작업 최적화하기

Universal Windows 앱은 모든 장치 패밀리에서 일관된 성능으로 작동해야 합니다. 배터리 전원을 사용하는 장치에서 전원 소비는 사용자의 전반적인 앱 환경에 중요한 요소입니다. 배터리 사용 시간이 하루 종일 유지되는 것은 모든 사용자에게 유용한 기능이지만 해당 앱을 포함하여 장치에 설치된 모든 소프트웨어의 효율성이 필요합니다.

백그라운드 작업 동작은 앱의 총 에너지 비용에서 가장 중요한 요소입니다. 백그라운드 작업은 앱을 열지 않고 실행되도록 시스템에 등록된 모든 프로그램 활동입니다. 자세한 정보는 Out-of-process 백그라운드 작업 만들기 및 등록하기를 참조하세요.

백그라운드 작업 권한

Windows 10 버전 1607 이상을 실행 중인 데스크톱 및 모바일 장치 사용자는 설정 앱의 배터리 섹션에서 "앱에 의한 배터리 사용"을 볼 수 있습니다. 여기에 앱 목록과 각 앱이 사용한 배터리 사용 시간의 비율(마지막 충전 이후 사용된 배터리 사용 시간 중)이 표시됩니다. 이 목록에 있는 UWP 앱에서 사용자는 앱을 선택하여 백그라운드 작업과 관련된 컨트롤을 열 수 있습니다.

battery usage by app

휴대폰의 백그라운드 권한

모바일 장치는 사용자에게 해당 앱의 백그라운드 작업 권한 설정을 지정하는 라디오 버튼 목록을 표시합니다. 백그라운드 작업은 "항상 허용됨", "허용되지 않음" 또는 "Windows에서 관리됨"으로 설정할 수 있으므로 시스템에서 다양한 요인에 따라 앱의 백그라운드 작업을 규제합니다.

Background task permissions radio buttons

데스크톱의 백그라운드 권한

데스크톱 장치에서는 "Windows에서 관리됨" 설정이 켜기/끄기 스위치로 제공되며 기본값은 켜기입니다. 사용자가 끄기로 전환하는 경우, 수동으로 백그라운드 작업 권한을 정의할 수 있는 확인란으로 표시됩니다. 확인란을 선택하는 경우 앱은 항상 백그라운드 작업을 실행하도록 허용합니다. 확인란을 선택하지 않으면 백그라운드 작업이 사용되지 않습니다.

background task permissions switch on

background task permissions switch off

앱에서 BackgroundExecutionManager.RequestAccessAsync() 메서드를 호출하여 반환되는 BackgroundAccessStatus 열거 값을 사용하여 현재 백그라운드 작업 권한 설정을 확인할 수 있습니다.

앱에서 책임 있는 백그라운드 작업 관리를 구현하지 않을 경우 사용자가 앱에 대해 백그라운드 사용 권한을 완전히 거부할 수 있으며, 이는 양쪽에 모두 바람직하지 않습니다. 앱을 백그라운드에서 실행하기 위한 권한이 거부되었지만 백그라운드 작업이 사용자에 대한 작업을 완료하기 위해 필요한 경우 사용자에게 알려 설정 앱으로 이동하도록 할 수 있습니다. 백그라운드 앱 또는 배터리 사용량 정보 페이지에 대해 설정 앱을 시작하여 이 작업을 수행할 수 있습니다.

배터리 절약 모드 기능 사용하기

배터리 절약 모드는 사용자가 설정에서 구성할 수 있는 시스템 수준의 기능입니다. 배터리 잔량이 사용자가 정의한 임계값 아래로 내려가면 "항상 허용됨"으로 설정된 앱의 백그라운드 작업을 제외하고 모든 앱의 백그라운드 작업이 모두 중단됩니다.

앱 내에서 배터리 절약 모드의 상태를 확인하기 위해 PowerManager.EnergySaverStatus 속성을 참조합니다. 열거 값은 EnergySaverStatus.Disabled, EnergySaverStatus.Off 또는 EnergySaverStatus.On입니다. 앱에서 백그라운드 작업이 필요하며 "항상 허용됨"으로 설정되지 않은 경우, EnergySaverStatus.On을 처리하려면 배터리 절약 모드가 꺼질 때까지 지정된 백그라운드 작업이 실행되지 않음을 사용자에게 알려야 합니다. 백그라운드 작업 관리는 배터리 절약 모드의 주요 목적이지만 배터리 절약 모드가 켜져 있는 동안 에너지를 더 절약하기 위해 앱에서 추가로 조정할 수 있습니다. 배터리 절약 모드가 켜져 있는 경우 앱에서 애니메이션 사용을 줄이거나, 위치 폴링을 중지하거나, 동기화 및 백업을 연기할 수 있습니다.

추가 백그라운드 작업 최적화하기

백그라운드 작업을 등록할 때 배터리 인식을 향상하기 위해 수행할 수 있는 추가 단계는 다음과 같습니다.

유지 관리 트리거 사용하기

SystemTrigger 개체 대신 MaintenanceTrigger 개체를 사용하여 백그라운드 작업이 시작되는 시기를 결정할 수 있습니다. 유지 관리 트리거를 사용하는 작업은 디바이스가 AC 전원에 연결된 경우에만 실행되며, 더 오래 실행할 수 있습니다. 지침을 보려면 유지 관리 트리거 사용하기를 참조하세요.

BackgroundWorkCostNotHigh 시스템 조건 형식을 사용합니다.

백그라운드 작업을 실행하려면 시스템 조건을 충족해야 합니다(자세한 정보를 보려면 백그라운드 작업 실행 조건 설정하기 참조). 백그라운드 작업 비용은 백그라운드 작업 실행이 에너지에 미치는 상대적인 영향을 나타내는 측정값입니다. 장치가 AC 전원에 연결되어 있을 때 실행 중인 작업은 낮음(배터리에 미치는 영향이 거의/전혀 없음)으로 표시됩니다. 화면이 꺼진 상태로 장치가 배터리 전원을 사용하는 경우, 실행 중인 작업은 장치에서 해당 시점에 실행 중인 프로그램 활동이 거의 없어서 백그라운드 작업의 상대적인 비용이 커지기 때문에 높음으로 표시됩니다. 화면이 켜진 상태로 장치가 배터리 전원을 사용하는 경우, 실행 중인 작업은 이미 실행 중인 일부 프로그램 활동이 있고 백그라운드 작업으로 인해 에너지 비용이 약간 더 추가되므로 중간으로 표시됩니다. BackgroundWorkCostNotHigh 시스템 조건은 화면이 켜지거나 장치가 AC 전원에 연결될 때까지 작업 실행을 연기합니다.

배터리 효율성 테스트하기

실제 장치에서 높은 전원 소비 시나리오에 대해 앱을 테스트해야 합니다. 여러 장치와 다양한 네트워크 강도의 환경에서 배터리 절약 모드를 켜거나 끄고 앱을 테스트하는 것이 좋습니다.