SuspendingEventHandler Delegato
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rappresenta il metodo che gestirà l'evento Suspending .
public delegate void SuspendingEventHandler(Platform::Object ^ sender, SuspendingEventArgs ^ e);
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(591565925, 58218, 16610, 177, 57, 164, 112, 70, 2, 166, 225)]
class SuspendingEventHandler : MulticastDelegate
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.Guid(591565925, 58218, 16610, 177, 57, 164, 112, 70, 2, 166, 225)]
public delegate void SuspendingEventHandler(object sender, SuspendingEventArgs e);
Public Delegate Sub SuspendingEventHandler(sender As Object, e As SuspendingEventArgs)
Parametri
- sender
-
Object
Platform::Object
IInspectable
Oggetto in cui è associato il gestore.
Dati dell'evento.
- Attributi
Requisiti Windows
Famiglia di dispositivi |
Windows 10 (è stato introdotto in 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)
|
Esempio
Questo esempio di codice illustra un modello di utilizzo tipico per questo evento. Questo codice viene usato da molti esempi XAML, ad esempio l'esempio input, come parte del code-behind per il file app.xaml. Se si esplorano gli esempi XAML, è possibile trovare il codice sorgente per l'API SuspensionManager
di classe come indicato in questo codice.
async protected void OnSuspending(object sender, SuspendingEventArgs args)
{
SuspendingDeferral deferral = args.SuspendingOperation.GetDeferral();
await SuspensionManager.SaveAsync();
deferral.Complete();
}
Private Async Sub OnSuspending(sender As Object, args As SuspendingEventArgs)
Dim deferral As SuspendingDeferral = args.SuspendingOperation.GetDeferral
Await SuspensionManager.SaveAsync
deferral.Complete()
End Sub
Commenti
Il sistema sospende l'app ogni volta che l'utente passa a un'altra app o al desktop e riprende l'app ogni volta che l'utente vi torna. Tuttavia, il sistema può anche terminare l'app mentre è sospesa per liberare risorse. Pertanto, è necessario gestire l'evento Suspending per eseguire le operazioni seguenti:
- Mantenere lo stato della sessione utente.
- Rilasciare eventuali blocchi esclusivi sulle risorse.
- Ridurre l'utilizzo della memoria, se possibile. Ad esempio, serializzare tutti i dati facili da ricostruire in forma di oggetto al momento della riattivazione.
- Salvare lo stato dell'app. L'evento Suspending è l'unica indicazione che l'app riceverà prima della chiusura (se si verifica). Per questo motivo, dovresti archiviare uno stato di sessione sufficiente (ad esempio l'articolo corrente letto o la posizione di riproduzione del filmato corrente) per ricreare la stessa esperienza durante l'attivazione. Le linee guida per la creazione di contenuti sono il salvataggio anticipato e frequente del lavoro di un utente, ma anche il commit di un salvataggio finale durante la sospensione. Il salvataggio dei dati prima della sospensione è utile perché il gestore eventi Suspending ha solo 5 secondi per completare l'operazione.
Se l'app viene terminata, puoi ripristinare lo stato dell'app in un override del metodo OnLaunched . Se l'app riprende prima che venga terminata, il sistema ripristina automaticamente lo stato dell'app. È consigliabile gestire l'evento Ripresa solo se è necessario aggiornare i contenuti visualizzati che potrebbero essere stati modificati durante la sospensione dell'app, ad esempio feed di notizie o la posizione dell'utente.