Windows Phone's "slow" multitasking debunked

There is a perception that Windows Phone's multitasking is slow, despite the powerful nature of the Snapdragon S4 processors that power most devices, due to the "Resuming..." or "Loading..." screens that often pop up when switching back to a previously used app. Thanks to an in-depth post on Reddit, the perception of slow Windows Phone multitasking has been debunked.

Windows Phone has a number of states that an application can be in: Active, which is when an app is in the foreground; Deactivated, which is a background app that hasn't been killed and remains in the memory; and Tombstoned, which is a deactivated app that's no longer in the memory. Both Deactivated and Tombstoned apps appear in the multitasking list, and there's no way to visually distinguish between the two.

Apps also have a number of events that developers can use to trigger certain actions, including Launching (an app is loaded from scratch) and Activated (where either a Deactivated or Tombstoned app is activated). When you're launching an app for the first time, developers often have code run during the Launching event that delays the app from being fully loaded, although often a splash screen is shown and time-consuming actions aren't run.

Where the perception of slow multitasking comes from is from the Activated event. Developers don't check whether the app is Deactivated or Tombstoned when the Activated event occurs and so often make time consuming code run during the event, despite the fact that a Deactivated app can is resumed almost instantly with basically all functions intact, while a Tombstoned app takes a little longer and may require code to be run.

The perception of multitasking being slow comes from the apps being slow, and running unnecessary code when a Deactivated app is Activated. If developers coded a simple check into their apps when an app is Activated, a large portion of "Resuming..." screens would be prevented as extra code wouldn't be run as an app relaunches.

Source: Reddit

Report a problem with article
Previous Story

Lumia 928 ad shows best low-light camera, better than iPhone 5, Galaxy S4

Next Story

Microsoft announces winners and finalists for the 2013 Partner of Year Awards

31 Comments

Commenting is disabled on this article.

Apparently, Windows Phone does not have an application cache, it has an data cache but it does not store a precompiled version of the program.

Nothing has been "debunked", as the article establishes that many WP apps are poor at multitasking. It may well be the fault of developers but all that matters at the end of the day is how apps on each platform perform.

Taken from the same article:

Now conjecture: which way is better, iOS or WP?

iOS' way is cleaner and easier on developers. It also avoids developers running unnecessary code every time the app is navigated back to. However, it also creates a situation where sometimes an app will start from where you left off and sometimes it will start from scratch.

WP's way is a bit messy and harder on developers to implement and get right, but it creates a somewhat consistent experience where, if you access the app from the navigation stack, the app should always resume from where you left off. Microsoft have tried to create the same sort of experience as on a PC, where when you open a minimized application from the taskbar it starts from where you were, but on a PC the application is maintained in memory the whole time, on lower memory devices like phones, this is not possible, hence the trickery in trying to emulate that experience.

StandingInAlley said,
Taken from the same article:

Now conjecture: which way is better, iOS or WP?

iOS' way is cleaner and easier on developers. It also avoids developers running unnecessary code every time the app is navigated back to. However, it also creates a situation where sometimes an app will start from where you left off and sometimes it will start from scratch.

WP's way is a bit messy and harder on developers to implement and get right, but it creates a somewhat consistent experience where, if you access the app from the navigation stack, the app should always resume from where you left off. Microsoft have tried to create the same sort of experience as on a PC, where when you open a minimized application from the taskbar it starts from where you were, but on a PC the application is maintained in memory the whole time, on lower memory devices like phones, this is not possible, hence the trickery in trying to emulate that experience.


So it requires testing... I would never ship an app that wasn't working properly like that... I'm interested to see what is involved (Knowing Microsoft I'm sure not much) to do this. I'm starting my first mobile app shortly.

StandingInAlley said,
Taken from the same article:

Now conjecture: which way is better, iOS or WP?

iOS' way is cleaner and easier on developers. It also avoids developers running unnecessary code every time the app is navigated back to. However, it also creates a situation where sometimes an app will start from where you left off and sometimes it will start from scratch.

WP's way is a bit messy and harder on developers to implement and get right, but it creates a somewhat consistent experience where, if you access the app from the navigation stack, the app should always resume from where you left off. Microsoft have tried to create the same sort of experience as on a PC, where when you open a minimized application from the taskbar it starts from where you were, but on a PC the application is maintained in memory the whole time, on lower memory devices like phones, this is not possible, hence the trickery in trying to emulate that experience.

I've never developed for iOS, but I did create my own WP app. It is extremely easy to program how your app reacts depending on if it is active, deactivated, or tombstoned. It is as simple as the different events being raised. It is not hard at all. If I (an amateur app developer) can understand it, then paid seasoned app developers certainly can.

It seems odd that this isn't a common check (or caught during app submission)... Hopefully more developers get in the habit of doing this...

App submissions checking do not look at the code for such matters. They check for malicious code (amongst other things but mostly that)

M_Lyons10 said,
It seems odd that this isn't a common check (or caught during app submission)... Hopefully more developers get in the habit of doing this...

In fact, it does. The rule says something like that :"the apps should start in less than 5 seconds otherwise it will be rejected". The turnabout solution is to put an annoying splash screen.

Brony said,

In fact, it does. The rule says something like that :"the apps should start in less than 5 seconds otherwise it will be rejected". The turnabout solution is to put an annoying splash screen.

Yes it does state that, but it still does not check your code for best practices. It only checks for malicious code and that the app confirms with user experience guidelines. You can meet UX guidelines using bad programming practices.

Android is basically the same (running, paused, and stopped states), but different methods are called depending on how the app is brought to foreground, so I guess it's harder to mess it up?

Julius Caro said,
Android is basically the same (running, paused, and stopped states), but different methods are called depending on how the app is brought to foreground, so I guess it's harder to mess it up?

If memory serves me right (it's been a while since I messed around the android sdk) the app lifecycle on both android and wp is closely similar. Documentation for both platforms discuss these events in detail but it seems WP devs simple choose the easier route.

I remember that the WP (and Win8) templates that come in Visual Studio have a sort of sessionmanager pre-included in the project that devs can build upon to handle these events.

So can any devs confirm if this is real? The guy that posted on reddit doesn't seem to provide any proof that all these apps do this and so I'm taking what he says with a pinch of salt.

If you use Windows Phone it's pretty clear it's the case. All included Microsoft apps load instantly, while a number of third party apps are slow, but not all.

Wordfeud has this problem, then again the app itself is crap compared to iOS and Android versions, the devs also don't bother to reply to emails.

Yes its real. I'm not an active app developer, but I did develop my own Windows Phone app. There are specific events triggered when an app is activated, deactivated, and tombstoned. It is very easy to create the check the article is referring too.

Redmak said,
Aren't there dev guidelines for this, I mean who wants to create a "slow" app?

A developer that isn't talented or can't be bothered (aka a bad developer).