Condividi tramite


Ottimizzare l'attività in background

Le app di Windows universali dovrebbero funzionare in modo coerente in tutte le famiglie di dispositivi. Nei dispositivi a batteria, il consumo di energia è un fattore fondamentale per l'esperienza complessiva dell'utente con l'app. La durata della batteria di tutti i giorni è una funzionalità auspicabile per ogni utente, ma richiede efficienza da tutto il software installato nel dispositivo, incluso il proprio.

Il comportamento delle attività in background è probabilmente il fattore più importante nel costo energetico totale di un'app. Un'attività in background è qualsiasi attività del programma registrata con il sistema per l'esecuzione senza l'apertura dell'app. Per altre informazioni, vedere Creare e registrare un'attività in background fuori process.

Autorizzazioni per le attività in background

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

utilizzo della batteria in base all'app

Autorizzazioni in background per dispositivi mobili

Nei dispositivi mobili, gli utenti visualizzeranno un elenco di pulsanti di opzione che specificano l'impostazione dell'autorizzazione per l'attività in background per tale app. L'attività in background può essere impostata su "Sempre consentito", "Mai consentito" o "Gestito da Windows", il che significa che l'attività in background dell'app è regolamentata dal sistema in base a diversi fattori.

Pulsanti di opzione per le autorizzazioni delle attività in background

Autorizzazioni in background sul desktop

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

Autorizzazioni per le attività in background attivate

autorizzazioni per le attività in background disattivate

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

Tutto questo significa che se l'app non implementa la gestione delle attività in background responsabile, l'utente potrebbe negare completamente le autorizzazioni in background per la tua app, che non è auspicabile per entrambe le parti. Se l'app è stata negata l'autorizzazione per l'esecuzione in background, ma richiede l'attività in background per completare un'azione per l'utente, è possibile inviare una notifica all'utente e puntare a Impostazioni di Windows. Questa operazione può essere eseguita avviando Impostazioni di Windows alla pagina delle App in background o dei Dettagli di utilizzo della batteria.

Usare la funzionalità Risparmio batteria

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

Controllare lo stato della modalità risparmio batteria dall'interno dell'app facendo riferimento alla proprietà PowerManager.EnergySaverStatus . È un valore di enumerazione: EnergySaverStatus.Disabled, EnergySaverStatus.Off o EnergySaverStatus.On. Se l'app richiede attività in background e non è impostata su "Always allowed", deve gestire EnergySaverStatus.On notificando all'utente che le attività in background indicate non verranno eseguite fino a quando il risparmio batteria non è disattivato. Anche se la gestione delle attività in background è lo scopo principale della funzionalità risparmio batteria, l'app può apportare ulteriori modifiche per risparmiare ulteriore energia quando il risparmio batteria è attivo. Nel caso in cui il risparmio batteria sia attivo, l'app potrebbe ridurre l'uso delle animazioni, arrestare il polling della posizione o ritardare le sincronizzazioni e i backup.

Ottimizzare ulteriormente le attività in background

Di seguito sono riportati altri passaggi che è possibile eseguire durante la registrazione delle attività in background per renderle più sensibili alla batteria.

Usare un trigger di manutenzione

È possibile utilizzare un oggetto MaintenanceTrigger anziché un oggetto SystemTrigger per determinare quando viene avviata un'attività in background. Le attività che usano trigger di manutenzione verranno eseguite solo quando il dispositivo è connesso all'alimentazione AC e possono essere eseguite per più tempo. Per istruzioni, vedere Usare un trigger di manutenzione .

Usare il tipo di condizione di sistema BackgroundWorkCostNotHigh

Le condizioni di sistema devono essere soddisfatte per consentire l'esecuzione delle attività in background . Per altre informazioni, vedere Impostare le condizioni per l'esecuzione di un'attività in background . Il costo del lavoro in background è una misura che indica l'impatto relativo sull'energia dell'esecuzione dell'attività in background. Un'attività in esecuzione quando il dispositivo è collegato all'alimentazione AC viene contrassegnato come basso (poco/nessun impatto sulla batteria). Un'attività in esecuzione quando il dispositivo è alimentato a batteria con lo schermo spento è contrassegnata come alta perché c'è presumibilmente poca attività di programma in esecuzione sul dispositivo in quel momento, quindi l'attività in background avrebbe un costo relativo maggiore. Un'attività in esecuzione quando il dispositivo è alimentato a batteria con lo schermo acceso è contrassegnata come media, perché presumibilmente esiste già un'attività di un programma in esecuzione e l'attività in background aggiunge un po' di più al costo energetico. La condizione di sistema BackgroundWorkCostNotHigh ritarda solo l'esecuzione dell'attività fino a quando lo schermo non è acceso o il dispositivo è collegato alla corrente alternata.

Testare l'efficienza della batteria

Assicurarsi di testare l'app su dispositivi reali per qualsiasi scenario a consumo energetico elevato. È consigliabile testare l'app in molti dispositivi diversi, con risparmio batteria acceso e spento e in ambienti con potenza di rete variabile.