I made a simple demo of Multitasking on Windows Phone 7 using Tombstoning. Now I get an awful lot of hits every day on the subject, so I decided to write my two cents to supplement the developer oriented post.
Let’s get one thing straight. Windows Phone 7 is a true multithreaded operative system. WP7 runs a User-Interface thread to ensure responsiveness even when apps are written poorly. WP7 does all network communication asynchronously. WP7 applications can utilize multiple threads and while apps are running, the underlying OS handles background tasks like notifications, messages, sensors and incoming calls.
But you can’t actually RUN several applications at one time, so it’s not a true multitasking OS. Instead developers are forced to manually save the state of an application when the application is navigated away from and load the state back to give the user the illusion that the app was running all the time. Like a Ninja! This might sound like a quick and dirty work-around at first sight, but actually that could not be further from the truth.
Along with the notification service, Tombstoning comes very close to a true multitasking experience for the end user for most types of applications without the disadvantages of true multitasking. Combined with the hardware back-button, the user will experience a kind of flow in daily use without always having to go back to the start screen. This lets the user multitask much more intuitively than for example on the Apple iOS even thou the phone actually pull off a David Copperfield.
The end user is God in Windows Phone 7 – like it or not, developers and nerds! (no offence, that's me too)
The advantage of only allowing the Tombstoning model is that lazy developers (and trust me, developers are lazy) can’t just let their applications continue to run and drain battery in the background while clogging up the phones memory until the phone becomes unusable.
The disadvantage obviously is that developers who actually have a legitimate multitasking need (like music streaming) just can’t do it right now. And don’t get me wrong – some applications will suffer from that. For example applications like Pandora (even thou I don’t know why I would use Pandora if I have a Zune Music subscription, but that’s beside the point).
Enabling multitasking would be so easy. Really, it’s right there but just kind of disallowed. So why did Microsoft not allow it? In my opinion they are taking a wait and see approach. All bets are final in this game. You can’t enable a lousy multitasking model and then tear it away in the next version. Android is struggling with the disadvantages of "true" multitasking and Apple finally created a limited but working multitasking model in version 4 of iOS. For example, an app in iOS4 can be allowed to stream audio while in the background. This works. Sometimes.
When my twitter app on iOS4 does its "happy new tweet sound", the background audio on my device stops and never returns. So yes, I can multitask on my iOS4 device! Just please stop tweeting me while I’m doing it. Multitasking 3rd party apps on a mobile device is not a trivial thing to get right! Then imagine doing it on a platform that doesn't have any 3rd party apps yet.
The jury is out on the multitasking issue. Apple and Google placed their bets and Microsoft is (as usual) waiting for the safe bet. It’s a boring but effective business model that has served Microsoft well for a long time.
If the Windows Phone team is as fast paced as the Silverlight team, a new version will come out very shortly (within 6-12 months from launch I think). Some of the major features I expect to see in the next version along with multitasking:
- Cut and Paste
- Direct access to camera and compass hardware from apps (for augmented reality)
- A mobile version of Internet Explorer 9 with HTML5 support
I think the platform might actually benefit from forcing developers to be good citizens to start with. Again, the end user is God. And really, multitasking on a mobile phone is one of those nice things that should be avoided whenever possible. It’s like taking a second mortgage on you house. When you need it, you need it but...
In my opinion, Windows Phone 7 is a platform that currently has more potential than the competition, but lacks a few key features. Features that nerds really care about with a religious passion but most consumers might not give a rats about them. For the average consumer, a feature like better battery life, fresh new User Inteface, XBOX Live, Office. Or heck, even the build in FM Radio might just be more important than multitasking for 3rd pary apps.
For me as a developer, the platform is very interesting right now. I think it will be one of the 3 major OS'es that will dominate the next decade of mobile computing.
Tags: windows phone