Was bringt Windows Phone 7.1 (Teil 3)
Kommentare

OnNavigatedFrom wird immer dann aufgerufen, wenn die MainPage geschlossen wird. Geschieht dies durch einen Druck auf den Back Hardware Button, werden keine Werte gespeichert. Andernfalls werden die in

OnNavigatedFrom wird immer dann aufgerufen, wenn die MainPage geschlossen wird. Geschieht dies durch einen Druck auf den Back Hardware Button, werden keine Werte gespeichert. Andernfalls werden die in ViewModel gesicherten Steuerelementwerte ins so genannte State Dictionary der Page gespeichert.

Da es sich dabei um eine Datenstruktur handelt, die sowohl Nutzdaten als auch Key in String-Form verlangt, ist die vorher implementierte Serialisierung zwangsweise erforderlich. In OnNavigatedTo wird der Status reanimiert (Listing 3).

Listing 3

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            if (_isNewPageInstance)
            {


                #region RestorePageState

                if (_viewModel == null)
                {
                    if (State.Count > 0)
                    {
                        _viewModel = (ViewModel)State["ViewModel"];
                    }
                    else
                    {
                        _viewModel = new ViewModel();
                    }
                }
                DataContext = _viewModel;

                #endregion
. . .
_isNewPageInstance = false;  

Was hier passiert, ist größtenteils Standard-C#. Interessant ist nur das Abfragen der Variable isNewPageInstance. Diese legt fest, ob es sich bei der vorliegenden Instanz der Page um eine frisch konstruierte oder eine reaktivierte handelt.

Übrigens: Falls sich ein Windows-Mobile-6-Programmierer wundert, wo die Eigenschaften der Steuerelemente geschrieben und gelesen werden – dies erfolgt transparent durch SilverLight.

In App.xaml.cs findet man eine Tonne von mehr oder minder relevantem Code. Interessant sind nur die drei Methoden: Application_Closing, Application_Deactivated und Application_Activated – sie serialisieren bzw. deserialisieren ebenfalls Objekte.

Nun kann der Test der Anwendung beginnen. Da es derzeit keine Updates für allgemein verfügbare Geräte gibt, muss man mit dem ab Windows Vista verfügbaren Emulator vorlieb nehmen. Um das Tombstoning der Anwendung zu erzwingen, öffnet man das Project Menue der IDE und klickt danach auf ExecutionModelSample Properties. In der Rubrik Debug aktiviert man dann Tombstone upon deactivation while debugging. Der Emulator wird die Anwendung dann unabhängig vom tatsächlichen Speichermangel nach dem Deaktivieren tombstonen.

Sodann kann der Emulator (bei bestehender Internetverbindung) durch Drücken von F5 gestartet werden. Er verbindet sich mit dem Internet und lädt einige Datenbytes herunter.

Im nächsten Schritt wird die Checkbox angeklickt und die Anwendung durch Druck auf den Start-Button minimiert. Ein normales Windows-Phone-7.5-Gerät würde die Anwendung nun anhalten. Da wir den Emulator vorher zum sofortigen Tombstonen animiert haben, findet unsere Anwendung sofort zu ihrer grabsteinigen Form. Nachdem der Launcher erscheint, klickt man auf Back und – tada! – die Anwendung sieht aus wie zuvor.

Multitasking mit Background File Transfers und Background Audio

Tombstoning reicht in den meisten Fällen aus, um dem Benutzer des Telefons eine täuschend echte Form von Multitasking vorzuspiegeln. Leider geht das nicht auf, wenn der Benutzer die Anwendung zum Herunterladen einer Datei oder zum Abspielen einer Mediendatei verwendet.

Dafür gibt es zwei spezielle Methoden, die als Background File Transfers und Background Audio bezeichnet werden. In beiden Fällen gibt man dem System einen Pfad zu einer Datei – und wartet. Man kann also nicht, wie unter Palm OS Garnet üblich, im Callback Schindluder treiben.

Dies kann man stattdessen über so genannte Scheduled Tasks erreichen. Sie sind an sich vorgesehen, um die weiter oben erwähnten Smarter Live Tiles zu aktualisieren. Mit etwas Trickserei kann man damit aber auch kleinere Multitaskereien performen.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -