So wird’s gemacht: Verwenden des ServicingComplete-Triggers (HTML)
[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]
Hier erfahren Sie, wie Sie ServicingComplete-SystemTrigger verwenden, um die Registrierung von Hintergrundaufgaben nach App-Updates zu steuern.
Wissenswertes
Technologien
Voraussetzungen
- Dieses Thema betrifft jede App, die mehr als eine Hintergrundaufgabe ausführt. Weitere Infos zum Schreiben einer Hintergrundaufgabenklasse finden Sie unter Schnellstart: Erstellen und Registrieren einer Hintergrundaufgabe.
Anweisungen
Schritt 1: Erstellen einer ServicingComplete-Hintergrundaufgabe
Die Registrierung von Hintergrundaufgaben überdauert App-Updates. Wenn eine App aktualisiert wird, sind die zugehörigen Registrierungen weiterhin gültig und werden ausgelöst. Eine App kann eine Hintergrundaufgabe mit dem ServicingComplete-Trigger registrieren, damit eine Benachrichtigung erfolgt, wenn die App-aktualisiert wird, um daraufhin die Registrierung von Hintergrundaufgaben aufzuheben, die nicht mehr gültig sind.
Erstellen Sie eine neue JavaScript-Datei für die Hintergrundaufgabe.
Der folgende Beispielcode zeigt einen einfachen Startpunkt für eine Hintergrundaufgabe:
// // 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(); })();
Suchen Sie nach dem Registrierungsobjekt für die Hintergrundaufgabe, deren Registrierung aufgehoben werden muss. Rufen Sie die Unregister-Methode auf, um die Registrierung der Aufgabe aufzuheben. Beachten Sie, dass Sie die Beendigung der Ausführung der Hintergrundaufgabe erzwingen können (falls eine Instanz aktiv ist), indem Sie den cancelTask-Parameter auf true festlegen.
// // 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(); })();
Registrieren Sie nach Bedarf Ersatzaufgaben. Verwenden Sie eine Funktion zum Registrieren von Hintergrundaufgaben, wie die unter So wird's gemacht: Registrieren einer Hintergrundaufgabe beschriebene Funktion, um die Arbeit zu vereinfachen.
// // 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(); })();
Schritt 2: Registrieren der ServicingComplete-Hintergrundaufgabe
Die ServicingComplete-Hintergrundaufgabe sollte zusammen mit anderen Hintergrundaufgaben registriert werden, damit sie bei einem App-Update ausgelöst werden kann. Der Einstiegspunkt für die ServicingComplete-Hintergrundaufgabe muss im App-Update der gleiche bleiben
Erstellen Sie ein neues SystemTrigger-Objekt.
Der erste Parameter, triggerType, sollte auf servicingComplete festgelegt werden.
Der zweite Parameter, OneShot, sollte auf false festgelegt werden.
Durch diesen Beispielcode wird ein ServicingComplete-Trigger erstellt:
var background = Windows.ApplicationModel.Background; var servicingCompleteTrigger = new background.SystemTrigger( background.SystemTriggerType.servicingComplete, false);
Hinweis Es wird davon abgeraten, eine Bedingung zu einem ServicingComplete-Hintergrundaufgabentrigger hinzuzufügen.
Rufen Sie die Registrierungsfunktion für die Hintergrundaufgabe auf, um die Aufgabe zu registrieren. Weitere Informationen zum Registrieren von Hintergrundaufgaben finden Sie unter So wird's gemacht: Registrieren einer Hintergrundaufgabe.
Durch den folgenden Code wird die ServicingComplete-Aufgabe registriert:
var entryPoint = "js\\ServicingCompleteTask.js"; var taskName = "ServicingComplete background task"; var task = RegisterBackgroundTask(entryPoint, taskName, servicingCompleteTrigger, null);
Hinweis In Windows Phone Store-Apps müssen Sie vor dem Registrieren von Hintergrundaufgaben einmal RequestAccessAsync aufrufen.
Schritt 3: Deklarieren der Hintergrundaufgabe im Paketmanifest
Die ServicingComplete-Hintergrundaufgabe muss, wie jede andere Hintergrundaufgabe, im Paketmanifest aufgeführt werden. Weitere Informationen finden Sie unter So wird's gemacht: Deklarieren von Hintergrundaufgaben im Anwendungsmanifest. Beispiel:
Anmerkungen
Wichtige Informationen zum Debuggen von App-Updates mit Hintergrundaufgaben finden Sie unter So wird's gemacht: Debuggen einer Hintergrundaufgabe (Windows Store-Apps).
Verwandte Themen
Schnellstart: Erstellen und Registrieren einer Hintergrundaufgabe
So wird's gemacht: Registrieren einer Hintergrundaufgabe
So wird's gemacht: Reagieren auf Systemereignisse mit Hintergrundaufgaben
So wird's gemacht: Festlegen von Bedingungen für die Ausführung einer Hintergrundaufgabe
So wird's gemacht: Deklarieren von Hintergrundaufgaben im Anwendungsmanifest