A while back Bryan Lunduke wrote about using Android on a desktop and he gave it a pretty good review. While I felt that the article was light on details, he defended his position and insisted that Android was, in his words, “a pretty typical desktop environment”. By the title of this post, you can probably guess that I disagree with that.
It’s not that Android is a bad OS, or is simply in need of additional features to make it a good desktop OS, it’s that Android has fundamental design decisions that worked well on mobile but will not translate to the desktop. One that I want to highlight, because I experienced it today on my tablet, is the problem of Android’s Activity Stack.
Android doesn’t deal with navigation in the same way conventional desktops do. Rather than each application managing it’s own (and only it’s own) state and navigation, Android uses a shared stack that can have a mix of Activities from different applications.
I found the image above on an MSDN page that shows the difference between Android and Windows 8, but Ubuntu and other conventional desktops work in much the same way as Windows. Illustrated here is the fact that you can have an Activity from App2 on top of (and seemingly a part of) Activities from App1. Modern versions of Android have tried to keep separate stacks for apps that are started independently, but they will still mix Activities that are started from inside an app.
To show why this causes problems I’ll demonstrate what I ran into today. While browsing Google+, using the native Android app, I came across a link to Reddit.
As you can see, I have a native Reddit app called reddit is fun so Android asks if I want to open the link in that, rather than Chrome, which is nice and works as expected. So far so good. However, rather than opening the Activity in the reddit is fun activity stack, it opens it in the Google+ activity stack. So that when we look at your open apps, you see what looks to be two instances of reddit is fun, when in fact one of those is actually Google+ according to Android.
Now this is confusing enough on it’s own, but it gets worse. You see, even though Android thinks this new reddit is fun Activity is part of Google+, the Activity itself does not. So what happens when you navigate “Back”? Well that depends on which control you use. If you use the softkey “Back” button, Android pops the reddit is fun Activity off of the Google+ stack and returns you to where you were. But, if you use the “Back” button in the ActionBar of the reddit is fun Activity, you go “back” to the Subreddit page for the article you are viewing. Not only was this page never part of your navigation, so I shouldn’t go “back” to it, but it’s still in the Google+ stack!
If you use the ActionBar’s “Back” action, you can find yourself browsing Reddit for quite some time while still inside the Google+ app. Now imagine what this would be like on a desktop, where you will regularly have multiple application windows visible at the same time and inter-mixed in different stacking orders.
If this were all just a bug then it could be fixed, and I would have no reason to say that Android won’t be a desktop OS. But this is all working as intended, it is a part of Android’s fundamental design. There’s not good way to fix this, other than a major refactor and workflow change, or a bunch of hacks to try and make use cases like this one behave differently than the standard workflow dictates. I don’t foresee Google wanting to invest a significant amount of developer time on either option to make Android a good desktop OS, especially when they are already investing that time into making Chrome OS for the desktop market.