Condividi tramite


Come usare il trigger ServicingComplete (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 ]

Illustreremo come usare ServicingComplete SystemTrigger per controllare la registrazione di attività in background dopo l'aggiornamento dell'app.

Cosa sapere

Tecnologie

Prerequisiti

Istruzioni

Passaggio 1: Crea un'attività in background ServicingComplete

Le registrazioni di attività in background sono persistenti dopo gli aggiornamenti dell'app. Se un'app viene aggiornata, le relative registrazioni continuano a essere valide e verranno attivate. È possibile registrare un'attività in background con il trigger ServicingComplete, per ricevere una notifica quando l'app viene aggiornata, e annullare la registrazione delle attività in background che non sono più valide.

  1. Crea un nuovo file JavaScript per l'attività in background.

    Nell'esempio di codice seguente è illustrato un punto di partenza di base per un'attività in background:

    //
    // 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. Trova l'oggetto di registrazione per l'attività in background di cui è necessario annullare la registrazione. Chiama Unregister per annullare la registrazione. Nota che puoi forzare l'interruzione dell'esecuzione dell'attività in background (se un'istanza è attiva) impostando il parametro cancelTask su 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();
    
    })();
    
  3. Registra le attività sostitutive come appropriato. Usa una funzione di registrazione delle attività in background, come quella specificata in Come registrare un'attività in background, per semplificare il lavoro.

    //
    // 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();
    
    })();
    

Passaggio 2: Registra l'attività in background ServicingComplete

L'attività in background ServicingComplete deve essere registrata insieme ad altre attività in background, in modo che possa essere attivata quando l'app viene aggiornata. Il punto di ingresso per l'attività in background ServicingComplete deve rimanere invariato nell'aggiornamento dell'app.

  1. Crea un nuovo oggetto SystemTrigger:

    • Il primo parametro, triggerType, deve essere impostato su servicingComplete.

    • Il secondo parametro, OneShot, deve essere impostato su false.

    In questo esempio di codice viene creato un trigger ServicingComplete:

    
    var background = Windows.ApplicationModel.Background;
    
    var servicingCompleteTrigger = new background.SystemTrigger(
                            background.SystemTriggerType.servicingComplete, false);
    

    Nota  Non è consigliabile aggiungere una condizione a un trigger dell'attività in background ServicingComplete.

     

  2. Chiama la funzione di registrazione di attività in background per registrare l'attività. Per altre informazioni sulla registrazione delle attività in background, vedi Come registrare un'attività in background.

    Nel codice seguente viene eseguita la registrazione dell'attività ServicingComplete :

    var entryPoint = "js\\ServicingCompleteTask.js";
    var taskName = "ServicingComplete background task";
    
    var task = RegisterBackgroundTask(entryPoint,
                                      taskName, 
                                      servicingCompleteTrigger, 
                                      null);
    

    Nota  Nelle app di Windows Phone Store, prima di poter registrare attività in background, devi chiamare una volta RequestAccessAsync.

Passaggio 3: Dichiara l'attività in background nel manifesto del pacchetto

L'attività in background ServicingComplete deve essere elencata nel manifesto del pacchetto, come qualsiasi altra attività in background. Per altre informazioni, vedi Come dichiarare le attività in background nel manifesto dell'applicazione. Ad esempio:

ServicingCompleteTask dichiarata nel manifesto dell'app

Osservazioni

Vedi Come eseguire il debug di un'attività in background (app di Windows Store) per informazioni importanti sul debug degli aggiornamenti delle app con attività in background.

Argomenti correlati

Guida introduttiva: Creazione e registrazione di un'attività in background

Come registrare un'attività in background

Come rispondere agli eventi di sistema con le attività in background

Come impostare le condizioni per un'attività in background

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