Comment utiliser le déclencheur ServicingComplete (HTML)
[ Cet article est destiné aux développeurs de Windows 8.x et Windows Phone 8.x qui créent des applications Windows Runtime. Si vous développez une application pour Windows 10, voir la Documentation ]
Découvrez comment utiliser le SystemTrigger ServicingComplete pour contrôler l’inscription de la tâche en arrière-plan après les mises à jour d’applications.
Ce que vous devez savoir
Technologies
Prérequis
- Cette rubrique s’applique à toute application qui exécute une ou plusieurs tâches en arrière-plan. Pour plus d’informations sur l’écriture d’une classe de tâche en arrière-plan, voir Démarrage rapide : créer et inscrire une tâche en arrière-plan.
Instructions
Étape 1: Créer une tâche en arrière-plan ServicingComplete
Les inscriptions de tâches en arrière-plan sont conservées après les mises à jour d’applications. Si une application est mise à jour, ses inscriptions continuent d’être valides et seront déclenchées. Une application peut inscrire une tâche en arrière-plan avec le déclencheur ServicingComplete pour être avertie lorsque l’application est mise à jour, et annuler l’inscription des tâches en arrière-plan qui ne sont plus valides.
Créez un fichier JavaScript pour la tâche en arrière-plan.
L’exemple de code suivant illustre un point de départ élémentaire pour une tâche en arrière-plan :
// // ServicingCompleteTask.js // (function () { "use strict"; // // This function does the work of the ServicingComplete background task. // function doWork() { // // A JavaScript background task must call close when it is done. // close(); } doWork(); })();
Recherchez l’objet d’inscription pour la tâche en arrière-plan dont l’inscription doit être annulée. Appelez Unregister pour annuler l’inscription de la tâche. Notez que vous pouvez forcer l’arrêt de l’exécution de la tâche en arrière-plan (si une instance est active) en affectant au paramètre cancelTask la valeur true.
// // ServicingCompleteTask.js // (function () { "use strict"; // // This function does the work of the ServicingComplete background task. // function doWork() { // // Unregister tasks that no longer exist. // var unregisterTask = "BadTaskName"; var unregTask = FindTask(unregisterTask); if (unregTask != null) { unregTask.Unregister(true); } // // A JavaScript background task must call close when it is done. // close(); } // // Check for a registration of the named background task. If one exists, // return it. // function FindTask(taskName) { var taskRegistered = false; var background = Windows.ApplicationModel.Background; var iter = background.BackgroundTaskRegistration.allTasks.first(); var hascur = iter.hasCurrent; while (hascur) { var cur = iter.current.value; if (cur.name === taskName) { return cur; } hascur = iter.moveNext(); } } doWork(); })();
Inscrivez des tâches de remplacement selon les besoins. Utilisez une fonction d’inscription des tâches en arrière-plan, comme celle indiquée dans Comment inscrire une tâche en arrière-plan, pour simplifier le travail.
// // ServicingCompleteTask.js // (function () { "use strict"; // // This function does the work of the ServicingComplete background task. // function doWork() { // // Unregister tasks that no longer exist. // var unregisterTask = "BadTaskName"; var unregTask = FindTask(unregisterTask); if (unregTask != null) { unregTask.Unregister(true); } // // Register new/replacement tasks. // var newTaskName = "New Background Task"; var newTaskEntryPoint = "js\\NewBackgroundTask.js"; var background = Windows.ApplicationModel.Background; var internetTrigger = new background.SystemTrigger( background.SystemTriggerType.internetAvailable, false); var newTask = RegisterBackgroundTask(newTaskEntryPoint, newTaskName, internetTrigger, null); // // A JavaScript background task must call close when it is done. // close(); } // // Check for a registration of the named background task. If one exists, // return it. // function FindTask(taskName) { var taskRegistered = false; var background = Windows.ApplicationModel.Background; var iter = background.BackgroundTaskRegistration.allTasks.first(); var hascur = iter.hasCurrent; while (hascur) { var cur = iter.current.value; if (cur.name === taskName) { return cur; } hascur = iter.moveNext(); } } doWork(); })();
Étape 2: Inscrire la tâche en arrière-plan ServicingComplete
La tâche en arrière-plan ServicingComplete doit être inscrite avec d’autres tâches en arrière-plan afin de pouvoir être déclenchée lorsque l’application est mise à jour. Le point d’entrée de la tâche en arrière-plan ServicingComplete doit rester le même dans la mise à jour de l’application.
Créez un objet SystemTrigger :
Le premier paramètre, triggerType, doit avoir la valeur servicingComplete.
Le second paramètre, OneShot, doit avoir la valeur false.
Cet exemple de code crée un déclencheur ServicingComplete :
var background = Windows.ApplicationModel.Background; var servicingCompleteTrigger = new background.SystemTrigger( background.SystemTriggerType.servicingComplete, false);
Remarque L’ajout d’une condition à un déclencheur de tâche en arrière-plan ServicingComplete n’est pas conseillé.
Appelez votre fonction d’inscription des tâches en arrière-plan pour inscrire la tâche. Pour plus d’informations sur l’inscription des tâches en arrière-plan, voir Comment inscrire une tâche en arrière-plan.
Le code suivant inscrit la tâche ServicingComplete :
var entryPoint = "js\\ServicingCompleteTask.js"; var taskName = "ServicingComplete background task"; var task = RegisterBackgroundTask(entryPoint, taskName, servicingCompleteTrigger, null);
Remarque Dans les applications du Windows Phone Store, vous devez appeler l’élément RequestAccessAsync une fois avant d’inscrire une tâche en arrière-plan.
Étape 3: Déclarer la tâche en arrière-plan dans le manifeste du package
La tâche en arrière-plan ServicingComplete doit être répertoriée dans le manifeste du package, tout comme toute autre tâche en arrière-plan. Pour plus d’informations, voir Comment déclarer des tâches en arrière-plan dans le manifeste de l’application. Par exemple :
Remarques
Pour obtenir des informations importantes liées au débogage des mises à jour d’application avec des tâches en arrière-plan, voir Comment déboguer une tâche en arrière-plan (applications du Windows Store).
Rubriques associées
Démarrage rapide : Créer et inscrire une tâche en arrière-plan
Comment inscrire une tâche en arrière-plan
Comment répondre aux événements système avec des tâches en arrière-plan
Comment définir des conditions pour exécuter une tâche en arrière-plan
Comment déclarer des tâches en arrière-plan dans le manifeste de l’application
Comment déboguer une tâche en arrière-plan
Recommandations et listes de contrôle concernant les tâches en arrière-plan