Windows Dev Center

Language: HTML | XAML

So wird’s gemacht: Anhalten einer App (HTML)

Hier erfahren Sie, wie Sie wichtige App-Daten speichern, wenn das System Ihre Windows-Runtime-App anhält. Wenn Ihre App vom System angehalten wurde, kann sie später ohne Warnung beendet werden. Es ist wichtig, den aktuellen Zustand des Benutzers in der App zu speichern, sodass Sie ihn wiederherstellen können, wenn die App neu gestartet wird. Der Benutzer sollte nie wissen, dass die App im Hintergrund angehalten und beendet wurde.

Die folgenden Schritte zeigen, wie das checkpoint-Ereignis registriert wird und wie es zum Aktualisieren des grundlegenden Zustands der App verwendet wird.

Anweisungen

Schritt 1: Registrieren für das Prüfpunktereignis

Führen Sie die Registrierung für das checkpoint-Ereignis im globalen Gültigkeitsbereich durch. Dieses Ereignis gibt an, dass die App vom System angehalten wird. Nachdem die App angehalten wurde, kann sie vom System auch beendet werden, um Systemressourcen freizugeben. Speichern Sie deshalb bei diesem Prüfpunktereignis unbedingt die Daten der App.



var app = WinJS.Application;

app.addEventListener("checkpoint", checkpointHandler);

Schritt 2: Speichern von Anwendungsdaten vor dem Anhalten

Wenn Ihre App das checkpoint-Ereignis behandelt, kann sie ihre wichtigen Anwendungsdaten in der Handlerfunktion für das checkpoint-Ereignis speichern. Die App kann das sessionState-Objekt verwenden, um einfache Anwendungsdaten synchron zu speichern. Das sessionState-Objekt behält Daten bei, damit die App bei der Aktivierung nach der Beendigung auf diese Daten zugreifen kann.


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;
}

Schritt 3: Freigeben exklusiver Ressourcen und Dateihandles

Wenn Ihre App das checkpoint-Ereignis behandelt, hat sie auch die Möglichkeit, exklusive Ressourcen und Dateihandles freizugeben. Beispiele für exklusive Ressourcen sind Kameras, E/A-Geräte, externe Geräte und Netzwerkressourcen. Durch explizites Freigeben exklusiver Ressourcen und Dateihandles können Sie dafür sorgen, dass andere Apps auf diese Ressourcen und Handles zugreifen können, wenn Ihre App sie nicht verwendet. Wenn die App nach der Beendigung aktiviert wird, muss sie ihre exklusiven Ressourcen und Dateihandles öffnen.

Anmerkungen

Das System hält Ihre App an, wenn der Benutzer zu einer anderen App oder dem Desktop wechselt. Wenn der Benutzer wieder zu Ihrer App wechselt, wird die App fortgesetzt. Beim Fortsetzen der App haben die Variablen und Datenstrukturen den gleichen Inhalt wie vor der Unterbrechung. Das System stellt die App exakt so wieder her, wie sie unterbrochen wurde. Dadurch entsteht für den Benutzer der Eindruck, die App wäre im Hintergrund weiter ausgeführt worden.

Das System versucht, die App und ihre Daten im Speicher zu behalten, während sie angehalten ist. Eine angehaltene App kann allerdings aus verschiedenen Gründen vom Betriebssystem beendet werden. Das kann z. B. der Fall sein, wenn der Benutzer die App manuell schließt, sich abmeldet oder die Systemressourcen knapp werden. Wenn der Benutzer wieder zu einer beendeten App wechselt, empfängt die App ein activated-Ereignis und sollte prüfen, ob seine sessionState-Objekte definiert sind. Wenn die Objekte definiert sind, sollte die App die Daten laden.

Das System benachrichtigt eine App nicht, wenn sie beendet wird. Wenn Ihre App angehalten wird, muss sie daher die App-Daten speichern und die exklusiven Ressourcen und Dateihandles freigeben, damit diese beim erneuten Aktivieren der App nach der Beendigung oder beim Fortsetzen nach dem Anhalten wiederhergestellt werden können.

Hinweis  Wenn Sie während des Anhaltens der App asynchrone Aktionen durchführen müssen, müssen Sie den Abschluss des Anhaltens bis zum Abschluss der Aktionen verzögern. Sie können den Abschluss des Anhaltens bis zum Abschluss der Zusage verzögern, indem Sie die setPromise-Methode für die detail-Eigenschaft der Argumente des checkpoint-Ereignisses aufrufen.
Hinweis  Zum Verbessern der Reaktionsfähigkeit des Systems unter Windows 8.1 und Windows Phone erhalten Apps nach dem Anhalten einen Zugriff mit geringer Priorität auf Ressourcen. Zur Unterstützung dieser neuen Priorität wird das Timeout für den Anhaltevorgang ausgedehnt, sodass die App für normale Priorität unter Windows über einen 5-Sekunden-Timeout und unter Windows Phone über einen Timeout von 1 bis 10 Sekunden verfügt. Dieses Timeout-Fenster kann weder verlängert noch geändert werden.

Ein Hinweis zum Debuggen mit Microsoft Visual Studio:  Visual Studio hindert Windows daran, eine App anzuhalten, die an den Debugger gebunden ist. Dies geschieht, damit der Benutzer die Debug-UI von Visual Studio sehen kann, während die App ausgeführt wird. Wenn Sie eine App debuggen, können Sie ihr mit Visual Studio ein Anhalteereignis senden. Sorgen Sie dafür, dass die Symbolleiste Debugspeicherort angezeigt wird, und klicken Sie dann auf das Symbol Anhalten.

Vollständiges Beispiel

Im Beispiel zum Aktivieren und Anhalten der App mit WinJS und im Beispiel zum Aktivieren, Fortsetzen und Anhalten der App mit WRL finden Sie vollständige Codebeispiele zur Behandlung von App-Lebenszyklus-Ereignissen.

Verwandte Themen

Aufgaben
Aktivieren einer App
Fortsetzen einer App
Konzept
App-Lebenszyklus
Richtlinien
Richtlinien für das Anhalten und Fortsetzen von Apps
Nachschlagewerk
WinJS.Application.checkpoint
WinJS.Application.sessionState

 

 

Anzeigen:
© 2015 Microsoft