Süßer als vom verbotenen Baum?

10 Tipps für Windows Phone Mango Tipp 8 Tombstoning
Kommentare

Einst galt sie als Speise der Götter – „Mangifera indica“ so der lateinische Name der Frucht, die namensgebend für die neueste Version von Windows Phone ist. In dieser Artikelserie erfahren Sie Tipps und Tricks, die die Entwicklung Ihrer Windows-Phone-7.5-Applikation erleichtern sollen. Beginnen wollen wir mit dem Bauen von Standort-abhängigen Anwendungen.

Unter Windows Phone ist parallel immer nur eine Anwendung aktiv. Ausnahme sind die betriebssystemeigenen Apps wie E-Mail oder Zune Player. Alle anderen Applikationen werden in einen „Schlafzustand“ versetzt, sobald eine neue App gestartet wird. Durch langes Drücken der „Back“-Taste können BenutzerInnen rasch zwischen einzelnen Applikationen hin- und herwechseln („Fast Task Switching“ genannt).

Damit der Arbeitsspeicher des Phones nicht von zu vielen schlafenden Programmen verbraucht wird, werden gegebenenfalls schlafende Apps geschlossen, um den Speicher freizugeben. Dabei werden wichtige Informationen über den aktuellen State der Applikation abgespeichert (sozusagen als Nachruf am Grabstein, engl. Tombstone), die eigentliche Applikation wird aber beendet. Holt der Benutzer die App zu einem späteren Zeitpunkt wieder in den Vordergrund, so wird eine neue Instanz gestartet, die die „Nachrufinformationen“, den State der alten App mitbekommt. Somit kann die neue Instanz zum letzten Zustand zurückkehren – für die Benutzer entsteht die Illusion, es wäre die gleiche App im gleichen Zustand. Um den Tombstoning-Prozess zu implementieren, gibt es vier Methoden in der App.xaml.cs- Datei, Code für den jeweiligen Anlass zu schreiben:

  • Launching: erster Start der App
  • Deactivating: App wird getombstoned
  • Activating: neue Instanz mit bestehendem State
  • Closing: App wird beendet (nicht deaktiviert)

Wichtig ist, dass nicht jede App durch den Benutzer wieder reaktiviert wird; man kann sich also nicht darauf verlassen, dass Activating und Closing jemals aufgerufen werden. Um das Konzept zu verdeutlichen, hier noch vier Beispiele für mögliche Methodenabfolgen:

  • Launching, Deactivating
  • Launching, Closing
  • Launching, Deactivating, Activating, Closing
  • Launching, Deactivating, Activating, Deactivating, Activating, Closing

In Deactivating speichern Sie den State der Applikation in ein dafür vorgefertigtes State Dictionary und laden es in Activating wieder herein. Hier bietet sich das ViewModel Pattern an, da darin alle Daten einer Seite gespeichert sind und somit nur ein einziges Objekt in das State Dictionary gespeichert werden muss. Listing 1 zeigt eine Beispielimplementierung für Tombstoning.

Listing 1: Tombstoning

private void Application_Activated(object sender, ActivatedEventArgs e)
{
    if (!e.IsApplicationInstancePreserved)
    {
      var vm = (MainVM)PhoneApplicationService.Current.State["MainVM"];
      // ViewModel weiterverarbeiten
    }
}

private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
    PhoneApplicationService.Current.State["MainVM"] = vm;
}
  

Fazit: Nur eine Windows-Phone-Applikation läuft zur gleichen Zeit. Tombstoning speichert den State einer schlafenden Applikation ab, bevor sie aus dem Speicher entfernt wird. Beim Reaktivieren steht dieser State wieder zur Verfügung, um den Benutzer dort weiterarbeiten zu lassen, wo er aufgehört hat.

DI Max Knor ist Technologieberater für Softwareentwicklung. Er betreut als Technical Global Alliance Manager bei Microsoft Corp. eine Hand voll internationaler ISVs im Bereich Retail-Software. Max hält Vorlesungen zu Cloud Computing, Softwarearchitekturen und Webentwicklung an zwei Fachhochschulen.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -