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

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.

  1. 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();
    
    })();
    
  2. 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();
    
    })();
    
  3. 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

  1. 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.

     

  2. 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:

ServicingComplete-Aufgabe, die im App-Manifest deklariert ist

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

So wird's gemacht: Debuggen einer Hintergrundaufgabe

Richtlinien und Prüflisten für Hintergrundaufgaben