Share via


Come sospendere l'esecuzione di un'app (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 ]

Informazioni su come salvare i dati importanti della tua app di Windows Runtime quando viene sospesa dal sistema. Quando l'app viene sospesa dal sistema può essere arrestata in seguito senza avviso. È importante salvare lo stato corrente dell'utente nell'app in modo che al riavvio dell'app tu possa ripristinare quello stato. L'utente non dovrebbe mai sapere che l'app è stata sospesa e terminata in background.

I passaggi seguenti mostrano come registrare l'evento checkpoint e usarlo per salvare lo stato dell'app di base.

Istruzioni

Passaggio 1: Registrati all'evento checkpoint

Registrati all'evento checkpoint nell'ambito globale. Questo evento indica che la tua app sta per essere sospesa dal sistema. Dopo che l'app è stata sospesa, potrebbe essere interrotta dal sistema per liberare risorse. Per questo motivo è importante salvare i dati dell'app durante l'evento checkpoint.


var app = WinJS.Application;

app.addEventListener("checkpoint", checkpointHandler);

Passaggio 2: Salva i dati dell'applicazione prima della sospensione

Quando l'app gestisce l'evento checkpoint ha la possibilità di salvare importanti dati dell'applicazione nel gestore eventi dell'evento checkpoint. L'app può usare l'oggetto sessionState per salvare in modo sincrono semplici dati dell'applicazione L'oggetto sessionState rende permanenti i dati in modo che l'app vi possa accedere durante la fase di attivazione successiva alla terminazione.

function checkpointHandler(eventArgs) 
{
    var stateObject = new Object();

    // TODO: Populate the state object with app data

    // Save the state object to the session object
    app.sessionState.stateObject = stateObject;
}

Passaggio 3: Rilasciare risorse esclusive e handle di file

Quando l'app gestisce l'evento checkpoint, può rilasciare risorse esclusive e handle di file. Esempi di risorse esclusive sono le fotocamere , i dispositivi di I/O, i dispositivi esterni e le risorse di rete. Il rilascio esplicito di risorse esclusive e di handle di file garantisce ad altre app di potervi accedere quando questi non sono usati dalla tua app. Quando l'app viene attivata dopo la chiusura, dovrebbe aprire i relativi handle di file e risorse esclusive.

Osservazioni

Il sistema sospende l'esecuzione dell'app tutte le volte che l'utente passa a un'altra app o al desktop. Il sistema riprende l'app ogni volta che l'utente torna all'applicazione. Quando il sistema riprende l'app, il contenuto delle variabili e delle strutture di dati è lo stesso esistente prima della sospensione dell'app. Il sistema riprende l'esecuzione dell'app esattamente dal punto in cui era stata interrotta, in questo modo all'utente sembra che fosse in esecuzione in background.

Durante il periodo della sospensione, il sistema cerca di mantenere l'app e i suoi dati in memoria. Il sistema operativo può arrestare la tua app per diversi motivi dopo che è stata sospesa. Ad esempio quando l'utente chiude manualmente l'app o si disconnette dal sistema oppure se le risorse di sistema sono insufficienti. Quando l'utente passa nuovamente a un'app la cui esecuzione era stata arrestata, l'app riceve un evento activated e deve verificare se gli oggetti sessionState sono definiti. Se gli oggetti sono definiti, l'app deve caricare i relativi dati.

Il sistema non notifica all'app che verrà chiusa, pertanto l'app deve salvare i relativi dati e rilasciare risorse esclusive e handle di file quando viene sospesa e ripristinarli quando viene ripresa o riattivata dopo l'arresto.

Nota  Per eseguire un'attività asincrona mentre l'app viene sospesa, devi posticipare il completamento della sospensione dopo il completamento dell'attività. Puoi utilizzare il metodo setPromise sulla proprietà detail dell'argomento event checkpoint per posticipare il completamento della sospesione dopo il completamento dell'attività.

 

Nota  Per migliorare la velocità di risposta del sistema in Windows 8.1 e Windows Phone, alle app viene assegnato un accesso con priorità inferiore alle risorse dopo la sospensione. Per supportare questa nuova priorità, il timeout per l'operazione di sospensione viene esteso in modo che l'app disponga dell'equivalente del timeout di 5 secondi per la priorità normale in Windows e di un timeout compreso tra 1 e 10 secondi in Windows Phone. Non puoi estendere o modificare questa finestra di timeout.

 

Una nota sul debug con Microsoft Visual Studio: Visual Studio impedisce a Windows di sospendere un'app associata al debugger per consentire all'utente di visualizzare l'interfaccia utente di debug di Visual Studio durante l'esecuzione dell'app. Durante il debug di un'app, puoi inviare a essa un evento di sospensione tramite Visual Studio. Assicurarsi che la barra degli strumenti Posizione di debug sia visualizzata, quindi fare clic sull'icona Sospendi.

Esempio completo

Vedi l'esempio di attivazione e sospensione di un'app con WinJS e l'esempio di attivazione, ripresa e sospensione di un'app con WRL per esempi di codice completi relativi alla gestione degli eventi del ciclo di vita dell'app.

Argomenti correlati

Attività

Come attivare un'app

Come riprendere l'esecuzione di un'app

Informazioni concettuali

Ciclo di vita di un'applicazione

Linee guida

Linee guida per la sospensione e la ripresa di un'app

Riferimento

WinJS.Application.checkpoint

WinJS.Application.sessionState