Come impostare le condizioni per un'attività in background (HTML)
[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]
Scopri come impostare le condizioni per l'esecuzione di un'attività in background solo quando serve. Può capitare che oltre all'evento che la attiva per eseguire un'attività in background debbano essere soddisfatte determinate condizioni. Puoi indicare una o più delle condizioni specificate da SystemConditionType durante la registrazione dell'attività in background. Le singole condizioni verranno verificate dopo l'attivazione del trigger e l'attività in background verrà accodata ma eseguita solo dopo che sono state soddisfatte tutte le condizioni necessarie.
La definizione di condizioni per le attività in background consente di risparmiare energia e tempo di esecuzione della CPU impedendo l'esecuzione di tali attività se non è necessario. Se, ad esempio, l'attività in background viene eseguita in base a un timer e richiede la connettività Internet, aggiungi la condizione InternetAvailable all'oggetto TaskBuilder prima di registrare l'attività. In questo modo l'attività non verrà più eseguita al termine del tempo previsto dal timer e quando la connettività Internet è disponibile e si eviterà di usare inutilmente risorse di sistema e durata della batteria.
Cosa sapere
Tecnologie
Prerequisiti
- In questo argomento partiamo dal presupposto che tu abbia già associato all'app un'attività in background e che l'app includa già il codice per creare un oggetto BackgroundTaskBuilder denominato taskBuilder.
Istruzioni
Passaggio 1: Creare un oggetto SystemCondition
Prima di aggiungere la condizione, crea un oggetto SystemCondition che rappresenta la condizione che deve essere attivata perché l'attività in background possa essere eseguita. Nel costruttore specifica la condizione che deve essere soddisfatta fornendo un valore di enumerazione SystemConditionType.
Il codice seguente consente di creare un oggetto SystemCondition in cui si specifica la disponibilità della connessione Internet come requisito condizionale:
var internetCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.InternetAvailable);
Passaggio 2: Aggiungere l'oggetto SystemCondition all'attività in background
Per aggiungere la condizione, chiama il metodo AddCondition sull'oggetto BackgroundTaskBuilder e passalo all'oggetto SystemCondition.
Il codice seguente consente di registrare l'attività in background InternetAvailable con TaskBuilder:
taskBuilder.AddCondition(internetCondition);
Passaggio 3: Registrare l'attività in background
A questo punto puoi registrare l'attività in background con il metodo Register. L'attività non verrà avviata finché non viene soddisfatta la condizione specificata.
Il codice seguente consente di registrare l'attività e di archiviare l'oggetto BackgroundTaskRegistration risultante:
var task = taskBuilder.Register();
Nota
Nelle app di Windows Phone Store, devi chiamare RequestAccessAsync prima di tentare di registrare attività in background. In Windows la chiamata è necessaria solo per il set di attività in background per la cui esecuzione l'app deve essere nella schermata di blocco. Nel telefono devi tuttavia chiamare il metodo una volta prima di registrare attività in background.
Per garantire che l'app di Windows Phone continui a funzionare correttamente dopo il rilascio di un aggiornamento, devi chiamare RemoveAccess e poi chiamare RequestAccessAsync all'avvio dell'app dopo l'aggiornamento. Per altre informazioni, vedi Linee guida per le attività in background (HTML).
Nota
A partire da Windows 8.1, i parametri di registrazione dell'attività in background vengono convalidati al momento della registrazione. Se uno dei parametri di registrazione non è valido, viene restituito un errore. L'app deve essere in grado di gestire scenari in cui si verifica un errore di registrazione dell'attività in background. Puoi ad esempio usare un'istruzione condizionale per controllare la presenza di errori di registrazione e quindi eseguire un nuovo tentativo in caso di errore della registrazione usando valori dei parametri diversi.
Passaggio 4: Inserire più condizioni nell'attività in background
Per aggiungere più condizioni, l'app effettua chiamate al metodo AddCondition. Queste chiamate devono essere effettuate prima che la registrazione dell'attività diventi effettiva.
Nota Presta attenzione a non aggiungere condizioni in conflitto tra loro a un'attività in background.
Il frammento di codice seguente mostra più condizioni nel contesto della creazione e registrazione di un'attività in background:
var hourlyTrigger = new Windows.ApplicationModel.Background.TimeTrigger(60, false);
var recurringTaskBuilder = new Windows.ApplicationModel.Background.BackgroundTaskBuilder();
recurringTaskBuilder.Name = "Hourly background task for YourApp";
recurringTaskBuilder.TaskEntryPoint = "js\\ExampleBackgroundTask.js";
recurringTaskBuilder.SetTrigger(hourlytrigger);
//
// Begin adding conditions.
//
var userCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.UserPresent);
var internetCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.InternetAvailable);
taskBuilder.AddCondition(userCondition);
taskBuilder.AddCondition(internetCondition);
//
// Done adding conditions. Now we register the background task.
//
var task = recurringTaskBuilder.Register();
Osservazioni
Nota Seleziona le condizioni più adatte per l'attività in background in modo che questa venga eseguita solo quando necessario e non venga eseguita quando non funziona. Per le descrizioni delle diverse condizioni delle attività in background, vedi SystemConditionType.
Argomenti correlati
Guida introduttiva: Creare e registrare un'attività in background
Come registrare un'attività in background
Come rispondere agli eventi di sistema con le attività in background
Come usare i trigger di manutenzione
Come dichiarare le attività in background nel manifesto dell'applicazione
Come eseguire il debug di un'attività in background
Linee guida ed elenchi di controllo per le attività in background