So wird’s gemacht: Behandeln der App-Aktivierung (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 die Aktivierungsdarstellung für Ihre Windows-Runtime-Apps erstellen.

Bei jedem Starten der App wird das activated-Ereignis ausgelöst. Dieses Ereignis kann auch während der Ausführung der App ausgelöst werden, wenn das System die mit einem neuen Aktivierungsvertrag verbundenen App-Parameter übergeben muss. Sie können mit dem activated-Ereignis den vorherigen Zustand der App wiederherstellen und die Aktivierungsparameter zu dem Vertrag abrufen, für den die App aktiviert wird. Eine vollständige Liste der Aktivierungsverträge und weitere Informationen zu deren Parametern finden Sie im Thema zur ActivationKind-Enumeration.

Die folgenden Schritte zeigen, wie das activated-Ereignis registriert wird und zum Wiederherstellen des grundlegenden Zustands der App und zum Behandeln einer Standardaktivierung von einer Kachel aus verwendet wird.

Anweisungen

Schritt 1: Registrieren für das activated-Ereignis

Führen Sie die Registrierung für das activated-Ereignis im globalen Gültigkeitsbereich durch. In diesem Beispiel wird activatedHandler als Aktivierungshandler festgelegt. Der Aktivierungshandler ermöglicht es Ihnen, den vorherigen ApplicationExecution-Zustand der App und die Aktivierungsargumente abzurufen. Eine Liste der Aktivierungstypen finden Sie in der ActivationKind-Enumeration.


var app = WinJS.Application;

app.addEventListener("activated", activatedHandler, false);
app.start();

Schritt 2: Wiederherstellen der App-Daten, wenn die App angehalten und dann beendet wurde

Eine angehaltene App kann 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 die App startet, nachdem sie vom Betriebssystem beendet wurde, empfängt sie ein activated-Ereignis. Mit dem sessionState-Objekt können Sie bestimmen, ob Sie die Daten der App wiederherstellen oder mit den Standardeinstellungen starten müssen. Wenn die sessionState-Variablen definiert sind, verwenden Sie diese zum Wiederherstellen der App-Daten und zum Aktualisieren des angezeigten Inhalts. Wenn diese Variablen nicht definiert sind, laden Sie die Standardeinstellungen.

Sie können auch mithilfe der PreviousExecutionState-Eigenschaft für die Ereignisargumente bestimmen, ob die App ihren Zustand wiederherstellen sollte. Wenn der ApplicationExecutionState-Wert dieser Eigenschaft Terminated lautet, sollte der Zustand wiederhergestellt werden. Bei jedem anderen Wert sollten die Standardwerte der App geladen werden.

Hinweis   Wird die App aktiviert, während Sie bereits ausgeführt wird, sollten Sie darauf achten, nicht die gespeicherten Daten wiederherzustellen.

 

function activatedHandler(eventArgs) {
   if (eventArgs.detail.kind == Windows.ApplicationModel.Activation.ActivationKind.launch) 
   {
      // Check whether my session state variables are valid.
      // If so, retrieve the application data saved in the checkpoint handler
      if (app.sessionState) 
      {
         // TODO: Populate the UI with the previously saved application data            
      } 
      else
      {
         // TODO: Populate the UI with defaults             
      }

   }
}

Schritt 3: Bei Ausführung auf einem neuen Computer werden bestehende sekundäre Kacheln abgefragt.

// Get secondary tile ids for the application and list them out

Windows.UI.StartScreen.SecondaryTile.findAllAsync().then(function (tiles) {
   if (tiles) {
      tiles.forEach(function (tile) {
         // Inspect the tile and do required work 
      });
   } 
   else {
      // there are no tiles 
      }
   });
}

Schritt 4: Abrufen der Aktivierungsargumente

Wenn die App vom System aktiviert wird, ist unter Umständen zusätzlicher Kontext für die Aktivierung vorhanden.

Jeder Aktivierungsvertragstyp besitzt einen eigenen eindeutigen Parametersatz, der weitere Informationen zum Aktivierungsgrund bereitstellt. Die eventArgs-Klassen für jeden Vertrag werden im Windows.UI.WebUI-Namespace definiert. Dieser Codeausschnitt zeigt, wie aus einem standardmäßigen Kachelstart Argumente abgerufen werden.

function activatedHandler(eventArgs) {
    if (eventArgs.detail.kind == Windows.ApplicationModel.Activation.ActivationKind.launch) 
    {
        if (eventArgs.detail.arguments !== '')
        {
            // TODO: Parse the arguments string
        }
    // Initialize the WinJS controls
    eventArgs.setPromise(WinJS.UI.processAll();)

    }
}

Schritt 5: Einrichten der App-UI

Wenn Sie die Aktivierung für einen ersten Start behandeln, zeigt das System den Begrüßungsbildschirm an, bis die Aktivierung der App abgeschlossen ist. In einigen Fällen muss die App unter Umständen asynchrone Aufgaben ausführen. Sie kann z. B. Einstellungen aus einer Datei lesen, um die Benutzeroberfläche korrekt zu initialisieren. Diese Aufgabe muss während der Aktivierung erledigt werden, sodass der Begrüßungsbildschirm nicht ausgeblendet wird, bevor die Benutzeroberfläche vollständig ist. Sie können den Abschluss der Aktivierung verzögern, indem Sie die setPromise()-Methode für die "eventArgs" der Aktivierung verwenden. Im vorherigen Codeausschnitt wird mit "setPromise()" der Abschluss der Aktivierung verzögert, bis der asynchrone Aufruf von "processAll()" abgeschlossen ist.

Wenn Sie die Microsoft Visual Studio-Vorlagen verwenden, wird "setPromise()" für Sie aufgerufen. Wenn asynchrone Aktivitäten abgeschlossen werden müssen, bevor der Begrüßungsbildschirm ausgeblendet wird, schließen Sie sie während des processed-Ereignisses Ihres neuen Seitenfragments ab. Stellen Sie sicher, dass eine Zusage von dieser asynchronen Aktivität zurückgegeben wird, um den Abschluss des processed-Ereignisses bis zum Abschluss der Aktivität zu verzögern. Das processed-Ereignis wird immer dann aufgerufen, wenn die App zu einem bestimmten Fragment navigiert. Stellen Sie deshalb sicher, dass jeder spezielle Aktivierungscode nur für eine Navigation ausgeführt wird, die durch eine Aktivierung ausgelöst wird. Bei einer normalen Navigation sollte dieser Code übersprungen werden.

Hinweis  Der Begrüßungsbildschirm dient nur dazu, sehr kurze Aktivitäten zu überbrücken, die zum Einrichten der ersten Benutzeroberfläche nötig sind. Länger dauernde Aktivitäten, wie Aufrufe an das Netzwerk oder das Laden großer Dateien vom Datenträger, sollten bei der Aktivierung nicht erfolgen. In diesen Fällen sollte die App bei der Aktivierung eine Status-UI oder einen erweiterten Begrüßungsbildschirm anzeigen und sofort von der Aktivierung zurückkehren. Der asynchrone Vorgang kann dann weiter im Hintergrund abgeschlossen werden.

 

processed: function (element, options) {
            // During an initial activation this event is called before activation completes.
            // Do any initialization work that is required for the initial UI to be complete.
            // Retrieve settings from a file
            return app.local.readText(settingsFile, "default").then(function (str){
                //use the settings to update the UI
            }, function () {
                //handle the error condition
               });
           },

ready:     function (element, options) {
            // During an initial activation this event is called after activation completes.
            // Do any initialization work that is not related to getting the initial UI set up.
           }

Anmerkungen

Wenn die App gestartet wird, wird das activated-Ereignis nach dem DOMContentLoaded-Ereignis und vor dem WinJS.Application.onloaded-Ereignis ausgelöst. Während der Ausführung der App können jederzeit activated-Ereignisse ausgelöst werden.

Hinweis  Wenn es aus bestimmten Gründen notwendig ist, mit der App im Dokument oberster Ebene zu navigieren, müssen Sie vor diesem Navigationsversuch die Aktivierung abschließen. Wenn Sie vor Abschluss der Aktivierung versuchen, in der obersten Ebene zu navigieren, stürzt die App ab. Hierdurch wird sichergestellt, dass die App und das System einen einheitlichen Zustand aufweisen, bevor der JavaScript-Kontext aufgehoben und während der Navigation neu erstellt wird.

 

Hinweis  

Für Windows Phone Store-Apps folgt auf das resuming-Ereignis immer das activated-Ereignis, auch wenn Ihre App derzeit angehalten ist und der Benutzer Ihre App über eine primäre Kachel oder die App-Liste neu startet. Apps können die Initialisierung überspringen, wenn für das aktuelle Fenster bereits Inhalte festgelegt wurden. Überprüfen Sie die LaunchActivatedEventArgs.TileId-Eigenschaft, um zu ermitteln, ob die App über eine primäre oder sekundäre Kachel gestartet wurde. Entscheiden Sie basierend auf dieser Information, ob die App neu gestartet oder fortgesetzt werden soll.

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

Verwandte Themen

Aufgaben

Anhalten einer App

Fortsetzen einer App

Konzept

App-Lebenszyklus

Referenz

Windows.ApplicationModel.Activation.ActivationKind

Windows.UI.WebUI.WebUILaunchActivatedEventArgs

WinJS.Application.activated