Condividi tramite


Ottimizzare l'attività in background

Le app di Windows universali devono avere prestazioni uniformi su tutte le famiglie di dispositivi. Nei dispositivi alimentati a batteria il consumo di energia è un fattore critico per l'esperienza complessiva dell'utente con l'app. Una batteria in grado di durare tutto il giorno è una caratteristica apprezzata da ogni utente, ma richiede l'efficienza di tutto il software installato nel dispositivo, incluso il tuo.

Il comportamento delle attività in background è probabilmente il fattore più importante per il costo totale di energia di un'app. Un'attività in background è l'attività di qualsiasi programma registrato nel sistema per l'esecuzione senza che l'app sia aperta. Per altre informazioni, vedi Creare e registrare un'attività in background out-of-process.

Autorizzazioni di attività in background

Nei dispositivi mobili e desktop che eseguono Windows 10, versione 1607 o successiva, gli utenti possono visualizzare l'"Uso della batteria in base all'app" nella sezione Batteria dell'app Impostazioni. Qui vedranno un elenco di app e la percentuale di durata della batteria usata da ogni app (rispetto alla durata della batteria usata dall'ultima carica). Per le app UWP in questo elenco, gli utenti possono selezionare l'app per aprire i controlli relativi all'attività in background.

battery usage by app

Autorizzazioni di attività in background nei dispositivi mobili

Nei dispositivi mobili, gli utenti vedranno un elenco di pulsanti di opzione che specificano l'impostazione delle autorizzazioni di attività in background per tale app. L'attività in background può essere impostata su "Sempre consentite", "Mai consentito in background" o "Gestito da Windows", ovvero l'attività in background dell'app è regolata dal sistema in base ai diversi fattori.

Background task permissions radio buttons

Autorizzazioni di attività in background nei dispositivi desktop

Nei dispositivi desktop, l'impostazione "Gestito da Windows" viene presentata come un interruttore, impostato su Attivato per impostazione predefinita. Se l'utente passa a Disattivato, viene visualizzata una casella di controllo con cui è possibile definire manualmente le autorizzazioni di attività in background. Quando la casella è selezionata, l'app è autorizzata a eseguire attività in background in qualsiasi momento. Quando la casella è deselezionata, l'attività in background viene disabilitata.

background task permissions switch on

background task permissions switch off

Nella tua app puoi usare il valore di enumerazione BackgroundAccessStatus restituito da una chiamata al metodo BackgroundExecutionManager.RequestAccessAsync() per determinare l'impostazione attuale delle autorizzazioni di attività in background.

Tutto questo è per dire che se la tua app non implementa una gestione responsabile dell'attività in background, l'utente potrebbe negare completamente alla tua app le autorizzazioni per l'attività in background, una scelta sconsigliata per entrambe le parti. Se all'app è stata negata l'autorizzazione per l'esecuzione in background, ma l'attività in background è necessaria per completare un'azione per l'utente, puoi inviare una notifica all'utente indirizzandolo all'app Impostazioni. A tale scopo, avviare l'app Impostazioni nella pagina App in Background o nella pagina dei dettagli dell'uso della batteria.

Usare la funzionalità di risparmio batteria

Il risparmio batteria è una funzionalità a livello di sistema che gli utenti possono configurare in Impostazioni. Questa funzionalità riduce notevolmente tutta l'attività in background di tutte le app quando il livello della batteria è al di sotto di una soglia definita dall'utente, ad eccezione dell'attività in background delle app impostate su "Sempre consentite".

Verifica lo stato della modalità di risparmio batteria dalla tua app facendo riferimento alla proprietà PowerManager.EnergySaverStatus. È un valore di enumerazione: EnergySaverStatus.Disabled, EnergySaverStatus.Off o EnergySaverStatus.On. Se l'app richiede l'attività in background e non è impostata su "Sempre consentite", dovrebbe gestire EnergySaverStatus.On comunicando all'utente che le attività in background specificate non verranno eseguite fino a quando il risparmio batteria è disattivato. Benché la gestione dell'attività in background sia lo scopo principale della funzionalità di risparmio batteria, l'app può apportare altre modifiche per conservare ulteriormente energia quando il risparmio batteria è attivo. Se il risparmio batteria è attivo, la tua app può ridurre il proprio uso di animazioni, interrompere il polling della posizione o rinviare le sincronizzazioni e i backup.

Ottimizzare ulteriormente le attività in background

Quelli che seguono sono altri passaggi che puoi eseguire quando registri le attività in background per renderle più efficienti riguardo al consumo della batteria.

Usare un trigger di manutenzione

Un oggetto MaintenanceTrigger può essere usato al posto di un oggetto SystemTrigger per determinare quando viene avviata un'attività in background. Le attività che usano trigger di manutenzione vengono eseguite solo quando il dispositivo è collegato all'alimentazione CA ed è loro consentita un'esecuzione per più tempo. Per istruzioni, vedi Usare un trigger di manutenzione.

Usa il tipo di condizione del sistema BackgroundWorkCostNotHigh

Perché sia possibile eseguire attività in background, devono essere soddisfatte le condizioni del sistema. Per altre informazioni, vedi Impostare le condizioni per l'esecuzione di un'attività in background. Il costo del lavoro in background è una misura che denota l'impatto energetico relativo dell'esecuzione dell'attività in background. Un'attività eseguita quando il dispositivo è collegato all'alimentazione CA viene contrassegnata come a basso impatto (impatto ridotto o nullo sulla batteria). Un'attività eseguita quando il dispositivo è alimentato a batteria con lo schermo spento è contrassegnata come ad alto impatto, perché l'attività dei programmi in esecuzione nel dispositivo è presumibilmente ridotta, quindi l'attività in background ha un costo relativo maggiore. Un'attività eseguita quando il dispositivo è alimentato a batteria con lo schermo acceso è contrassegnata come a impatto medio, perché è presumibilmente in corso una certa attività dei programmi e l'attività in background aumenta di poco il costo energetico. La condizione del sistema BackgroundWorkCostNotHigh rinvia semplicemente l'esecuzione dell'attività fino a quando lo schermo non sarà acceso o il dispositivo non sarà collegato all'alimentazione CA.

Testare l'efficienza della batteria

Assicurati di testare l'app su dispositivi reali per qualsiasi scenario di consumo elevato di energia. È una buona idea testare l'app su molti dispositivi diversi, con il risparmio batteria attivo e disattivato, e in ambienti con potenza di rete variabile.