Mobile Multitasking is all about Planning and Design
When building a mobile application, there are many considerations that either don’t apply, or work quite differently than on a PC. One of those is how multitasking (or the mobile equivalent) is handled.
From the perspective of a designer, multitasking in its current form has been around on PCs “forever” — which means at least long enough for everyone to have a common understanding of what it means to multi-task on a PC. When you say “multitasking” to a PC person, the general concept envisioned is having many applications running that are either minimized or sharing screen space. It’s easy to switch back and forth (alt+tab on windows) between them and they are all running all the time so each is instantly available as soon as you switch back to it. This works well and is practical because of a number of key factors that separate PCs from mobile devices:
1) Large Screens – PCs have always had large enough screens such that it has been practical for multiple applications to be shown on-screen at the same time. Half (or less) of the average PC screen is plenty of space for most applications to display their content comfortably, leaving lots of room for other applications to run in the periphery.
2) Lots of Memory – the average PC today has more runtime memory (RAM) than the entire storage space available on the typical smartphone had until the last couple of years — and even then it was mostly the iPhone shipping with a small hard drive inside, other mobile phones didn’t tend to have the same available space. More memory allows more applications to keep their data available in real-time.
3) Power – when active, each running application is using a little bit of the CPU. Since mobile processors are much more limited in their performance than their desktop counterparts, less applications can share the CPU and run effectively. Power also refers to electrical power. For years smartphones COULD have included super fast and super powerful processors which would make multitasking a breeze… but you’d end up having to keep your device plugged in due to the battery technology not keeping up (kinda takes the ‘mobile’ part of mobile phone away).
4) Real-time reactions - most people would not be happy if their mobile phone periodically, and silently went into a state where the phone application could not be loaded in time to take a phone call and therefore they missed the call. Traditionally, PCs have not had these real-time responsibilities. We’ve all experienced our PC suddenly start chugging away on something and be unresponsive for a period of time. If our phones do this, we miss calls. The primary responsibility of mobile phones has always been to make and receive calls and the entire phone architecture is built around making sure that ability is not compromised — at the expense of decreased multitasking abilities.
Each mobile platform has taken a different approach to supporting multitasking capabilities and it’s important to understand how each impacts your application’s functions and how a user’s behaviour and expectations on each platform also alter how you are designing your mobile application.
First, let’s take a look at how each major mobile platform handles multitasking — from the application functional design perspective. If you know the code and particulars behind each platform, you’ll probably quibble with how I describe them, but functionally designing an application is different than the technical details of implementing it.
Android: when an app is sent to the background it can effectively remain running. If the device gets low on memory, it will kill applications at will to maintain enough available memory for the applications running in the foreground. There’s no specific limit to what a background application can do on Android although there’s a practical limit in that if a background app is behaving badly, using up battery life or making the device respond poorly, the app will get a bad reputation, bad reviews and ultimately be less (or un-) successful.
BlackBerry: multitasking has been a core function of the BlackBerry OS ever since the early days. Applications can run in the background on BlackBerry with no real technical limits on their behaviours. The BlackBerry OS itself will mostly gracefully decline in performance as the number of running applications increases (much like a PC does). It is the closest multitasking experience to the PC.
iOS: Apple has only included the ability to “multitask” since OS 4. Their implementation is not really multitasking. Apple allows applications to register to do certain specific things in the background but NOT continue to run arbitrary code. The four things an application is allowed to do in the background on iOS are: VOIP calls, play music, receive notifications of location changes or constantly updated location data, and receive push notifications. When an app is closed (or the user switches to another application) there is a small window of time allowed for an application to complete a running task but after that, the application is suspended and there’s no active arbitrary background processing that can occur.
Windows Phone 7: Microsoft has implemented a “multitasking” solution akin to Apple’s iOS implementation. Apps running in the background can mostly only do a few core functions, otherwise, they are suspended. In addition, only 5 applications can be suspended, when you try to send a 6th application to the background, the oldest running one is killed. There is some extra flexibility provided in the Windows Phone 7 experience to allow for small “agents” (background services) that can be run periodically in the background. These agents are given limited memory and CPU time to run so it’s not like running a full app in the background, but it does allow for some smaller background tasks to run on a periodic basis behind the scenes.
Does true multitasking matter to you?
From the perspective of the application designer, unless you are doing one of the few core functions that are supported in background apps on all platforms, for the most part, only Android and BlackBerry truly support multitasking. This hasn’t seemed to hinder the proliferation of applications and innovations on the iOS platform, but has limited some people’s application designs. Many things that could be done in the background can be done almost as effectively by leveraging push notifications.
I have seen some applications that just work better on Android and BlackBerry because they allow fine-grained control over the actions that an application can do in the background. For example, say you are using LBS and want more fine-grained location information than when the device switches cell towers but don’t need up-to-the-second live GPS updates. On iOS, you’re out of luck; you have to do one or the other or neither. BlackBerry and Android allow the application to decide when to poll for LBS info in the background so a happy medium between imprecise updates and battery-hogging live GPS updates can be implemented.
For most applications, the important thing to remember is to consider the limitations and how best to manage them within the design and feature set of your application. If you plan from the beginning and understand the limitations of the mobile platforms you are working on, an application’s design and feature set can be tailored to working great on mobile, and getting positive feedback from your users.