Shared publicly  - 
Poor Multitasking Etiquette on Android

I've frequently been frustrated by poor performance on my Android phone - waiting for the phone or messaging app to wake up, for instance - only to then see an alert pop up that I have new messages in gmail, or that new tweets have arrived. 

Tonight, I had the most blatant fail of all.  I was using Gmail, and suddenly it quit, and I got the message "Updating Gmail."  

What part of "Put the user first" don't these developers understand? If I'm actively doing something in the foreground, this should pre-empt any background task.  Instead, it seems to be the other way around:  background tasks are always pre-empting my foreground tasks.

I can imagine some urgent alerts that might want to pre-empt me  in some future version of Google Now - "Accident ahead. Updating Route..." - but that's not what is happening here.

This is just wrong.  I don't know whether it's a matter of lots of poorly trained programmers with little sense of user interaction, or whether there are some misfeatures at the operating system level that make it difficult for developers to keep out of each others shorts.

But whatever it is, someone senior at Google ought to pay some attention to this problem before it gets worse.﻿
Aaron Wood's profile photoAleksandr Ivanov's profile photoBob Frankston's profile photoPeter Harris's profile photo
Switch off auto-updates? I have mine set to the good old manual way and I never had anything like you were describing happening here. ;-)﻿
I cannot agree more. This is a very poor user experience.

Maybe +Ficus Kirkpatrick can do something about it or explain that weird behavior.﻿
Lucky you - my Gmail has a habit of throwing in a Server Error hissyfit and refusing to save/send the msg on which I've been working﻿
I've had similar issues lately.  I am having trouble figuring out how to disable some of the services that run for some of my apps.  And using task killers doesn't work for some or they just come right back.  ﻿
I had a similar experience at an airport - wanted to buy a soda but the message said downloading update -- had to wait for the complete update cycle before I could make my purchase. Fortunately it was finished before I had to board.

We see another flavor of this in the emergency test messages that take over my video stream blocking whatever I'm watching and then continuing after that point. This is not programmers gone wild as much as assuming that ones application or product is the only thing, not most important but simply the only thing that matters.﻿
The kill on update is an oversight in the OS. Slow app switching hasn't been an issue on my devices.﻿
I never had auto-update interfering with regular usage of app or causing app to shutdown.

However, the phone slows down considerably when updating.

Using unrooted galaxy nexus.﻿
Strange, never encountered this problems  (Samung S3).﻿
What phone/android version are you using, +Tim O'Reilly ? I have zero problems on Nexus 4. Plus, I don't understand why anyone would want auto update apps, just disable it and update it when you want it.﻿
Switch off auto updates or have the wifi always on. Yes, I think there is a problem myself. ﻿
+Tim O'Reilly having watched the Google I/O presentation on user experience, I think they have a team that has done the work and is educating app developers. Though this is a deep is issue, one that we'll need to wait to be addressed in future releases.﻿
+Tim O'Reilly  When you say your waiting for Phone or Message app, is that from another app, or from Home Screen? If from an App it would sound more like bad developers not handling saving their apps state effectively  although Android could make that a bit easier. ﻿
My iPhone cant even SINGLE-task﻿
+Steve Noblin Switching off auto-update would keep app updates from interfering, but not updates to email or twitter. These should never impact the performance of a foreground activity like writing a text or an email, or making a phone call, or looking up a phone number.﻿
I turned off auto-updating long ago. I like to read the updates before I install them anyway.﻿
Mostly the I/O is the bottleneck for these devices. But it got better the last years, except for Asus using slow and cheap storage.﻿
I'm on a Gnex, too, but as I have auto-update turned off for apps I never have this problem. ﻿
I've seen the same bad design with on the desktop. It forcefully logged me out last week, presumably to get some random update, while I was in the middle of writing an email. Infuriating -- someone thinks it's more important that I get an update right this second than finish the sentence I was typing.﻿
Oh, and then those android kernel devs choose to select the I/O scheduler with the least multitasking behavior.﻿
Multitasking design flaw is one thing. It can be rectified easily.

Memory leak bug is another. My biggest gripe is the memory leak bug in Android 4.1.2. My phone will slow down to a crawl after a couple of weeks and I have to reboot the phone. I've tried force quitting as many apps and services and using garbage collection apps to clean up. Nothing works. Looks like the memory leak issue is in the Android OS itself.

Google FAIL!! I'm defecting to iPhone.﻿
+Tim O'Reilly I completely agree! The user experience created by this is extremely damaging to Android's image in an extremely competitive market. Especially as users get more and more impatient, devices need to be able to prioritize tasks depending on the user's behavior.﻿
It seems like its gotten worse recently. Project butter has turned into project stutter.﻿
Tim I'm haven't worse problems (not down to me I think) on my Z10 they are similar to yours﻿
I don't think this is about multitasking. This is about if updates should be applied automatically or not.

With a phone some tasks have to be able to interrupt other tasks. You want to receive a call when someone calls you or you want the phone to try to send the email you wrote as soon as the net becomes available.

This is something iOS has traditionally done horribly, though some progress has been made for iOS 7.

Personally I like the fact that Android updates stuff in the background, and it annoys me that some applications don't take advantage of this. The Google plus app for example doesn't automatically update its data.﻿
I'm using Android 4.2.2 on a Nexus 7 and its email client gives me notices about email sometimes a week or more after that email has arrived, been read, and deleted.﻿
FWIW, I've disabled a bunch of background syncing by going to Settings and tapping on accounts there. I had disabled Now and a bunch of search types to make search come up faster; not sure if it works. I have a Galaxy Nexus, and some of the latest releases like Hangouts give me the sense the Android team is targeting phones in the N4/GS4 generation and doesn't really mind if things are slow on the GN.

(I also logged out of Facebook. Frees some memory, plus I don't check Facebook as much as a bonus. :) )﻿
was that the battery thing steve jobs was going on about﻿
Well now I think I'm going to wait for iOS7 and the 5S. Disappointed to hear this ﻿
The same thing happened to me when I was in the middle of watching a YouTube video, the app suddenly quit and started updating!﻿
+Tyson Quick At least Android gets updates for the gmail app and other core apps, unlike iOS. With iOS the version baked into the rom is the version you're stuck with until Apple releases a new rom a year later.﻿
Actually my phone has never had a single problem. The apps never crash ﻿
+Tyson Quick iOS apps tend to 'fail gracefully'. that means they appear to not start and you have to press the icon again. 

Updates for apps on Android bring new features, not just bugfixes. ﻿
IMHO the biggest problem of Android that +Google does not follow their own best practises and guidelines. It looks like all Android stuff is split into two categories: OS and built-in apps and all other proprietary apps like GMail. First category is built in the same manner following all the best practises Google writes about in dev blogs. Second category lives by itself, looks like crap and works like crap.

When a 3rd party developer starts a new app he of course looks at Google apps as examples and see that making crap is OKAY. I think this is unacceptable and Google should put a lot of effort in making their proprietary apps a first-class Android apps, not some crap.﻿
+Tim O'Reilly I used to have lag problem with my GN especially when updating apps in the background while doing something. But ever since I got my Nexus 4 it went away. Quad core with much better graphics does make a big difference. But I do agree that an update to an app should be delayed if its in user's foreground.﻿
Just imagine you are in the middle of a hangout and suddenly stopped because it is being updated.. lol!﻿
Very often I find myself in total agreement with +Tim O'Reilly  but this rhetorical question I find presumptuous: "What part of 'Put the user first' don't these developers understand" implies that these poor souls ought to understand every part of "Put the user first."  But why is that?  In mobile development this is an Apple motto, after all.﻿
Two problems it seems you are describing. Auto-updates(disable them) and general Galaxy Nexus lag. Since 4.2.2 ,the Gnex has had major lag issues. Several hacks have appeared to try and address it but all seem placebo. It seems best to limit background services that consume memory and reboot ~weekly.﻿
+Rafal Blaszkiewicz you had lags on your GN because of eMMC issues. On a software side. The issue was partially fixed in Android 4.2.2 update, but only if you install it and make a hard reset after. Or you could use my app, which I don't want to spam with here.﻿
I am an Android user. I just got a Galaxy S 4. I love the platform and the device, but I have experienced some of the same issues that +Tim O'Reilly  and others have described. They are all frustrating and demonstrate that the Android team needs to double check their priorities and tweak their implementation of these features.

As a software architect that emphasizes user experience first in all the applications I build, I find it interesting that so many of you are posting about disabling auto updates or limiting background apps. Both of those are unacceptable options, IMHO. 

Disabling convenience features or limiting usage is not a user first approach. It is a failure in design and execution. Android needs to address these issues and put the focus back on the users before the trend of user inconvenience becomes worse.

The fast paced evolution of the Android OS has been a wonderful thing, and I fully believe in rapid iteration for software development. Rapid iteration is not an excuse for neglecting the user focus or allowing these annoyances to exist long term.

Priority setting is a key factor in good software development. The Android team needs to take a step back, refocus, re-prioritize, and get the user back in the spotlight as the most important factor in decision making.﻿
+Matthew Gregg yes. And it does if your kernel comes without discard mount option. Which is rarity today. Google added this option in 4.2.2, CM added a bit later and I don't know of any custom kernel today without it.

So today it is totally useless. But it was extremely useful just a few months ago.

If you still have some performance problems, then you should investigate and profile the system. This is how I've found a way to fix eMMC issue - many days of profiling and testing to find my own bottleneck.

Most common problem on my own devices is that Maps are doing strange things in background. I've installed Greenify app and hibernated Maps and that helped. But you should search for your specific problem and analyse it. Installing random hacks and tweaks create more problems than resolve.﻿
Greenify on a rooted phone. Stops those misbehaving apps from even running in the background﻿
Still working from my trusty 3GS but waiting for the 5S to launch on the UK. No problems tho now missing out on the great video apps but sounds like it's worth waiting for the 5S unless Google's plans with Moto are about to be unveiled?﻿
It's not just Android. I'm constantly muttering at my computer: "I don't care what some idiot OS developer thinks is important. I paid for this machine and what I'm doing is what matters." I swear that software has gotten worse as resources (memory and hard drive space) have expanded.﻿
This smacks of the cooperative multitasking that plagued early versions of (pre-BSD) Mac OS.  The problem is that the Dalvik JVM isn't terribly good at containing/throttling runaway applications.﻿
+Aleksandr Ivanov actually my wife uses my GN now and still has lags when updating apps. She's on CM10.1 with Franco's latest kernel. I think its just not enough processing power in that old phone :)﻿
This frustrates me continuously and it often isn't clear what process has captured the device (Galaxy Nexus) as there will be nothing in the notification bar. It even messes with basic functionality like keyboard launch or the appearance of my first gesture-typed word.﻿
I blame the OS. Background apps constantly do things like start themselves just so they can use my network bandwidth thus leaving me with a drained battery when I wasn't even really using the device. It's the job of an OS to say "no" to silly apps, to understand when the phone is not being used and conserve battery, to understand when the phone IS being actively used and limit background process priority, etc..

Oh, the exact same apps on iOS? Behave properly.﻿
That's strange. Foreground apps actually have second priority only after persistant apps (apps that are part of the framework and marked as such). So I'd think this is not really by design.

For anyone who cares, the ordering can be found in﻿
Having an iPad and a Droid phone, I gotta say the iPad is comfy and the Droid is ... Inelegant.
Overall my multitasking experience in Android has been very positive. I have encountered the "updating while using" issue with various applicationd though. Very frustrating and can result in data loss.﻿
Never seen this update problem +Tim O'Reilly I do have manual updates on. But I don't see your other problem either, with late message notification. Odd. I agree that foreground use should pre-empt an update if you have auto on.
Nexus 4 in my case, lovely phone.﻿
These symptoms are exactly why my employer asks for prospective hires to be able to demonstrate experience in interfaces and user experience. While it could be a system architectural issue I'm more inclined to think it's a developer issue. Google could help the situation by producing some developer guides to train around common performance issues but the problem is by no means isolated to Android and there's no means to require their use. However, making such guides available could send the public message that Google is interested in improving the level of programming in the wild.﻿
It's a sad day when my only reason for liking a platform is that it isn't Microsoft or Apple, and indeed it inflicts great damage on Microsoft and Apple, two companies I despise with a passion (for moral reasons), along with their products (for technical reasons).

That's pretty much where I am with Android. It's not Microsoft or Apple, and it actually hurts them. A lot. Oh, and it's Free (in the important sense). But beyond that I don't have much good to say about it.

My first gripe is that it's Java (OK, Dalvik) - a horribly bloated, inefficient and insecure platform. Yes, it also happens to be the No.1 programming language (Java anyway), for some unfathomable reason, but the entire premise of software "virtual machines" is frankly an abomination, and one whose only real benefit (portability) is rarely exploited anyway, thus making it utterly redundant. Give me native binaries compiled from C any day, with hand-optimised assembler on the time-critical functions. How hard can it be? Seriously.

The second problem with Android is its Filesystem Hierarchy is a joke, a mess so obscene it makes my eyes bleed just looking at it. Trying to drill down into that mess to find something is like trying to find a needle in a haystack ... that was ripped apart by a tornado ... after a fire. And the obscene obfuscation doesn't end there - just understanding the boot process is a black art, and that's before even touching any of the proprietary roadblocks manufacturers erect to stop users committing the "heinous crime" of accessing their own legally-purchased property.

Indeed, despite the ostensibly "open" nature of Android, certain key facets of the platform remain shrouded in mystery, and trying to get any information about them is like trying to squeeze blood from a stone, accompanied by an eerie silence and dark foreboding, as though some unspeakable evil might be unleashed in the process. Just look at some of the many unanswered questions on XDA Developers Forums for examples. That's the inevitable consequence of tainting Free with proprietary, I guess. Half the time you don't know which is which, until you try to get any information about it, at which point the software equivalent of the Stasi turns up and gives you a cold, menacing stare, and your delusions of freedom are brutally shattered.

Another problem is Android and its apps seem to spend an inordinate amount of time "polling" things, both on the local filesystem and remotely over the network. I've yet to analyse this beyond a cursory glance, but I'd wager that most of this "polling" is utterly redundant, at least from the perspective of it being of any benefit to the user, and is most likely a consequence of DRM and advertising.

The end result of all this bloat, DRM and obfuscation is an unsurprisingly slow system that's virtually impossible to diagnose and fix in place, or even use with any acceptable degree of flexibility. What part of "my property" don't these manufacturers understand? Give me root, dammit, straight out of the box! Better yet, give me an OS that isn't bloated, obfuscated, slow and riddled with security vulnerabilities, despite the anti-consumer DRM junk plastered all over it.

Oh wait, we already have one of those, it's called GNU/Linux.

So remind me again, why did Google need to reinvent the wheel with Android?

It boggles my mind that these multi-core, multi-gigahertz machines run slower and multitask less efficiently than an 8MHz Amiga from the 1980s, a machine that also benefited from a battery-backed clock - something else oddly missing from most Android devices which, as I've only just discovered, apparently can't even tell the time without a network connection. This is why files created by Android recovery managers (e.g. TWRP, CWM) are all dated 1970, ironically enough, given that 70s operating systems were probably more advanced than Android - in every way that actually matters, anyway.﻿
This happens all the bloody time on Windows and it is nearly always infuriating. I haven't had it happen much on my phone but I feel your pain.﻿
I have a GNexus as well and IMO I just need more ram. Also have a nexus 7 and don't have issues with slow down. But on the gnexus, it is common if I switch between heavy games and apps. In my opinion we're just using a dated phone, software is still progressing quickly, adding fancy features that push the hardware.. Not to mention how our use of the devices changes and gets more demanding.
Written on a GNexus :)﻿
I hate the attitude that the bloated software problem should be "solved" with ever-more powerful hardware, rather than admitting that bloated software itself is the problem, and doing something about it.

As I said above, it beggars belief that a three-decade old Amiga, with half a meg of RAM and an 8MHz CPU, is actually faster and multitasks better than a modern, multi-core, multi-gigahertz Android device.

How can that be possible?

Answer: The obscene bloat in Android, primarily due to Java/Dalvik, vs. an OS written in BCPL that runs in half a meg of RAM.

It's long past time that programmers admitted there's a major bloat problem, and went back to the drawing board.﻿
Never have issues like that. Odd﻿
I'm on a satellite connection and have those issues more than I would have expected, apps deciding to quit and update, I am thinking of Gmail and Firefox in particular.  So I was thinking it might be an algorithm for deciding if the network is busy gets confused and gives up.  I have no idea.  My CPU spends a fair amount of time at 60MHz with a max of 900, so it seems to save battery even though it always is supplied with wall current.  mk802, Android 4.0.3﻿
One basic tenet I learned as a young coder was to check for conditions first. The evidence points to that having gone by the wayside. Seems that people now code as though their application (on most platforms) is the only one out there. Granted, you can't get them all, but seeing if there is a busy condition is pretty darn basic. OTOH, I consider it a huge fail that the OS doesn't assume some of these functions. Thinking back to IBM 360 global processing...﻿
+Frank Rehse I think auto-update was just the latest example.

I can feel some sluggishness when I'm opening my (large-ish) phone-book or phone.  These are other examples for which there's no simple fix (not installing applications that do background work is not a solution).﻿
Yes! This has been a crusade I've been waging for years, and it isn't limited to phones. That same mentality impacts every device and every operating system. Booting up windows and going and making a pot of coffee (or breakfast) while it starts up and every attention whore application vies for time to update itself, spit out numerous irrelevant messages and the like when I just wanted to check something on a website. Or ubuntu Linux when it decides to launch an update check while I'm working on something on my tired netbook and it thrashes the drive to make the system nearly unusable, and to add insult to injury, brings up the update window into focus demanding urgent attention while I was frantically typing a message that needed to get out asap. You name it, every system suffers from it. Android deciding to sleep all night while on wifi and the charger and not do squat and instead decide to update 15 applications at the every moment I've left the house and actually need to use it for something. IMHO +Tim O'Reilly it's lazy programmers that think their application is the most important thing on the planet. IMHO, while a user is actively typing or using an application in the foreground, everything in the background should be cranked up in niceness and should almost never preempt, with the exception of streaming media perhaps (which was started by the user) - this brings up another example of running a media player for a party in the foreground only to have updates and another nonsensical activities happen in the background, sometimes resulting in choppy audio. STOP!! Especially in mobile devices, nearly all background activity should only happen when the device isn't being used, i.e., the screen is off. </rant>﻿
I think, they don't think about the user senses.  They think about updating the software on device limitation.  Sorry, have you compare the between the WP OS and Android OS?  There are much difference.  With the same internal memory on those device, Android has more application than WP.

So if the update is in a background task without closing the current application, it's meant they have two application.  The old one and the new one.  After the new one is installed, then the old one have to uninstalled.

Without disturb the forground at user sense to use the application.﻿
If Android were a real OS like GNU/Linux it'd handle open-files properly, by silently waiting until the last file handle is closed, then unlink and replace the file, thus negating the need to force the application to close just because it's been updated in the background. This uses precisely *zero* additional memory, and only temporarily uses additional disk space. The end result is the entire system can be updated, if necessary, and not a single app or service needs to be forced to close - they'll quite happily keep running the open copies forever, until the user decides to quit the respective apps/services, at which point the last file-handle on each open file will close, be unlinked and replaced silently, without any interruption to the user.

That's how GNU/Linux works. The fact that Android's kernel is actually Linux only makes its broken behaviour all the more ironic.

I suppose this problem may be a manifestation of the ridiculous fact that Google insists on using Microsoft filesystems on a Linux-based operating system, for some unfathomable reason, combined with whatever retarded methods Java Davik uses to handle open files and updates.﻿
Rather a lot has to do with proper programming protocols. I spent the last 15 years on UNIX and Linux commercial systems, and saw many instances where programmers simply failed to tests for conditions that should prohibit an update (or other﻿ action) from starting. At the very least, programs are quite capable of asking permission before taking actions that would degrade performance. Again - I lay a good part of the problem with the operating system, especially in single user, multiprocessor, environments... But that's a rant for another day.﻿
Android no good! ﻿
Home Slated - simply get lost! Stick with what you want (maybe an amiga or what ever) your comments are bloated like your critics and that's it.﻿
Add a comment...