WINDOWS PHONE

Die Smartphone-Plattform von Microsoft

“Smart Multitasking” und “Grabsteine” in Windows Phone 7

“Smart Multitasking” und “Grabsteine” in Windows Phone 7

  • Comments 6

Eines der von Windows Mobile her bekannten Konzepte, freies Multitasking bzw. die Ausführbarkeit von Prozessen im Hintergrund, wird in Windows Phone 7 erst einmal nicht zur Verfügung stehen. Über das Für und Wider ist ausführlich diskutiert worden – Fakt ist, dass “normales” Multitasking auf mobilen Geräten der Performance und Akkulaufzeit nicht sonderlich zuträglich ist. Um die Benutzbarkeit von Geräten mit Windows Phone 7 unter allen Umständen zu garantieren, setzen wir hier auf ein anderes Konzept, das die Marketing-Leute “smart multitasking” nennen ;-) Was steckt dahinter?

Anwendungen von Drittanbietern (also alles, was nicht als Bestandteil des OS von Microsoft oder dem OEM ausgeliefert, sondern über den Marketplace installiert wird) können unter WP7 nur im Vordergrund ausgeführt werden – oder eben gar nicht. Navigiert man also von einer Vordergrund-App weg (Drücken des “Zurück”-Buttons über die erste Seite der App hinaus, Drücken des “Start”-Buttons, Aufrufen der Kamera, Kontakte oder anderer sog. Launcher oder Chooser), dann wird die Anwendung beendet. Punkt.

(Das gilt nicht für die eingebauten Funktionen wie den Browser, den Zune Player oder das Telefon – diese funktionieren im Hintergrund.)

Damit der Benutzer trotzdem vernünftig mit einer Anwendung arbeiten kann, sollte der Entwickler deshalb dafür sorgen, dass die relevanten Einstellungen und Zustandsinfos der App passend weggespeichert werden. Sie können dann beim nächsten Start der App wieder hervorgeholt und die App in den Zustand versetzt werden, in dem sie vor dem Beenden war – idealerweise merkt der Nutzer so gar nicht, dass die App beendet wurde.

Das ist besonders dann wichtig, wenn eine App bspw. auf die Kamera des Gerätes, die gespeicherten Fotos, Kontakte o.ä. zugreifen will – auch dann wird nämlich (über die Launcher und Chooser) zu einer anderen App gewechselt. Die vom Benutzer ausgewählten Daten werden dann der wieder frisch gestarteten Anwendung zur Verfügung gestellt. Einstellungen und Zustand können im Isolated Storage abgespeichert werden, die Serialisierung von Objekten übernehmen dabei spezielle APIs. Das “Settings Sample” demonstriert, wie es geht.

Im Lebenszyklus einer App gibt es dafür 4 Events, die unten zusammen mit den zugehörigen Aktionen dargestellt sind: Launching, Closing, Deactivated und Activated. Das Ausführungsmodell von WP7 ist hier ausführlicher dokumentiert.

tombstone

Beachtenswert ist in diesem Zusammenhang das neue Konzept des “tombstoning”, das auftritt, wenn der Start-Button gedrückt oder ein Launcher/Chooser angesprochen wird. An diesem Punkt wird die App im Hintergrund quasi eingefroren (das Deactivated-Event wird ausgelöst) und nach Rückkehr “wiederbelebt” (Activated-Event), ist also im Prinzip nur “scheintot”. Das Besondere an dieser Situation (gegenüber dem normalen Beenden der App, wo persistente Daten gespeichert werden sollten) ist, dass hier auch gewisse flüchtige Daten (Beispiel: auf welcher Seite einer Silverlight-App befindet sich der Nutzer gerade) gespeichert werden sollten. Das kann über die spezielle PhoneApplicationService-Klasse geschehen – welche in einem Deactivated/Activated-Zyklus den Zustand der App speichert, aber nicht in einem Closing/Launching-Zyklus. (Eine App hat übrigens 10 Sekunden Zeit für das Speichern, dann wird sie gnadenlos terminiert – also keine Megabytes an Daten wegspeichern…)

Mein Kollege Yochay Kiriaty hat auf dem Windows Phone Developer Blog einen ausführlichen dreiteiligen Eintrag zu dieser Thematik verfasst, der absolut empfehlenswert ist – Teil 1, Teil 2, Teil 3. Pflichtlektüre für Entwickler, die den Lebenszyklus ihrer App auf WP7 richtig in den Griff bekommen wollen.

- Frank

Leave a Comment
  • Please add 3 and 2 and type the answer here:
  • Post
  • ... was dann also im Umkehrschluss bedeutet, nicht eben mal Mails lesen/beantworten zu können, während ein Podcast im entsprechenden Player heruntergeladen wird, da dieser ja beim Wechsel zum Mailprogramm beendet wird -- um nur irgend ein Beispiel zu nennen. Ein weiteres wäre die beendete Navigation bei eingehenden Anrufen. Sehe ich das richtig?

  • Und genau das wird den Grabstein für Phone 7 setzen. Punkt

  • Wie kann man dann zukünftig Anwendungen wie ICQ oder ähnliches schreiben, welche immer laufen sollten und erst bei eintreffen einer Nachricht aktiv werden!?

  • @Silas: Nein - die "eingebauten" Anwendungen wie Media Player, Browser, Email usw. sind multitaskingfähig. Nur keine 3rd-Party-Apps. Bei Navigation arbeiten wir an einer Lösung.

    @Wolfgang: Was zu beweisen wäre. Fehlendes "echtes Multitasking" hat über 50 Millionen Kunden nicht davon abgehalten, sich für ein Smartphone eines gewissen anderen Herstellers zu entscheiden, dessen Namen wir beide kennen.

    @Monti: Erstmal gar nicht, bis wir garantieren können, dass solche Anwendungen die Performance, Stabilität, Sicherheit und Akkulaufzeit eines Gerätes nicht (allzu) negativ beeinflussen. Bei WP7 gilt: null Toleranz bzgl. der User Experience.

    Gruß,

    Frank

  • Das Konzept kenne ich doch irgendwo her... Ach ja, vom iPhone!

  • Ja, generell ist das ja auch in Ordnung.

    Aber es sollte unbedingt eine standardisierte Listener-API oder ähnliches geben, wo man seine Anwendung registriet und auf als "Subscriber" auf bestimmte Ereignisse reagieren kann, die dann die eigene Anwendung aktivieren. Beispiel ist ein Event für eine eingehende Push-Mail oder SMS, wo ich dann meine eigene Anwendung reinhängen kann, die dann sofort aktiv wird. Bspw ein Virenschutz bei einer eingehenden Mail. Noch wichtiger ist dies bei Anwendungen, die auf eingehende Bluetooth-Verbindungen reagieren sollen. Wenn ein  Bluetooth-fähiges Gerät in der Nähe ist, will ich mit meiner Anwendung ggf.- sofort eine Verbindung initiieren (Router, Beamer usw.).

    Das würde mal ein echter Fortschritt sein und WP7 vom m.E: missglückten Pseudo-Multitasking eines bekannten Mitbewerbers separieren.

Page 1 of 1 (6 items)