Was bringt Windows Phone 7.1 (Teil 2)
Kommentare

Wer die neuen Funktionen nutzen will, muss – zwangsweise – Vista oder Windows 7 als Hostsystem verwenden. Mangels Mango für Endgeräte ist der XP Workaround spätestens hier an seinem Ende angelangt,

Wer die neuen Funktionen nutzen will, muss – zwangsweise – Vista oder Windows 7 als Hostsystem verwenden. Mangels Mango für Endgeräte ist der XP Workaround spätestens hier an seinem Ende angelangt, da man den Simulator unter Windows XP nicht verwenden kann. Besitzt man hingegen eine passende Betriebssystemversion, führt der nächste Schritt zur Betaversion der 7.1 Developer Tools durch Klick auf Download the free tools heruntergeladen und am PC installiert werden können. Leider verträgt sie sich nicht mit der Version für 7.0. Wer also nicht mit Betacode arbeiten will, sollte sich eine virtuelle Maschine zulegen.

Multitasking auf dem Windows Phone

Beim Multitasking unter Windows Phone 7.1 ist nichts so, wie es scheint. Anstatt realem Multitasking wie unter Windows Mobile oder Symbian, hat Microsoft die Ansätze des klassischen Palm OS kopiert und mit einigen neuen Bekannten aus Android kombiniert. Der Lebenszyklus einer Windows-Phone-7.5-Anwendung ist in Abbildung 3 zu sehen.

Abb. 3: Der Lebenszyklus einer WP-7.5-Anwendung (Bildquelle Microsoft)
Abb. 3: Der Lebenszyklus einer WP-7.5-Anwendung (Bildquelle Microsoft)

Im Zustand Dormant – das bedeutet im Englischen so viel wie schlafend – ist die Anwendung zwar noch aktiv, schläft aber. Das heißt, dass all ihre Threads in die Pause geschickt werden. Wenn die Anwendung wieder in den Vordergrund kommt, werden sie wieder aktiviert.

Der Zustand Tombstoned – zu Deutsch: in einen Grabstein verwandelt – ist kritischer. Anwendungen erreichen ihn dann, wenn sie im Hintergrund liegen (also Dormant sind) und die Vordergrundanwendung mehr Speicher braucht. Windows Phone 7.5 macht in diesem Fall einen Screenshot der Anwendung, merkt sich die offenen Fenster und terminiert die Anwendung ohne weitere Vorwarnung. Allerdings erscheint das Programm unter Umständen nach wie vor im Taskmanager. Die Besonderheit dabei ist das so genannte State Dictionary. Dabei handelt es sich um eine dem Android Bundle nicht unähnliche Struktur, in die der Entwickler den Zustand seines Formulars schreiben kann. Wird eine getombstonte Anwendung wiederbelebt, sollte der Entwickler (wie unter Palm OS) die im Dictionary befindlichen Informationen nutzen, um den Zustand der Anwendung wiederherzustellen.

Anwendungen „Tombstonen“

Diese (auf den ersten Blick verwirrend klingende) Beschreibung lässt sich am besten mit einem Beispiel visualisieren. Microsoft bietet hierzu ein Execution Model Sample genanntes Beispiel an.

Als erstes fällt eine ViewModel genannte Klasse auf. Sie ist zwecks einfacherer Serialisierung als DataContract definiert und enthält eine Horde von Eigenschaften, die durch die Verwendung von DataMember als zu serialisierende Variable gekennzeichnet werden. Im (leicht gekürzten) Quellcode sieht das wie in Listing 1 aus.

Listing 1

[DataContract]
    public class ViewModel : INotifyPropertyChanged
    {
        private string _textBox1Text;
        private bool _checkBox1IsChecked;
        private bool _radioButton1IsChecked;
        private bool _radioButton2IsChecked;
        private double _slider1Value;

        public event PropertyChangedEventHandler PropertyChanged;

        private void NotifyPropertyChanged(string propertyName)
        {
            if (null != PropertyChanged)
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }

        [DataMember]
        public string TextBox1Text
        {
            get { return _textBox1Text; }
            set
            {
                _textBox1Text = value;
                NotifyPropertyChanged("TextBox1Text");
            }
        }  

Das eigentliche Formular wird in der Klasse MainPage realisiert. Der Grund für obige Serialisierung erschließt sich nach einem Blick auf die Routine in Listing 2.

Listing 2

protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
        {
            // If this is a back navigation, the page will be discarded, so there
            // is no need to save state.
            if (e.NavigationMode != System.Windows.Navigation.NavigationMode.Back)
            {
                // Save the ViewModel variable in the page's State dictionary.
                State["ViewModel"] = _viewModel;
            }
        }  
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -