Android is not going to be a desktop OS

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.

activity_stacks

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.

Screenshot_2014-12-30-14-34-07Screenshot_2014-12-30-14-34-14Screenshot_2014-12-30-14-35-23As 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.

Screenshot_2014-12-30-14-34-50

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!

Screenshot_2014-12-30-14-34-24

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.

 

 

 

This entry was posted in Programming and tagged , , , , , , . Bookmark the permalink.

7 Responses to Android is not going to be a desktop OS

  1. Henning says:

    Isn’t this fixed already in Android 5? On my Nexus 5 phone, all such links open new tasks in the task switcher, like on my desktop.

    • Michael Hall says:

      I don’t have 5 yet, but I would be surprised if they did a major refractor to accomplish it properly

      • They claim to have fixed it, but there’s still plenty of cases where this behaviour still happens. I remember letting out a belly laugh the first time it happened to me since “being fixed”.

  2. Shane Thompson says:

    I’m not qualified as a developer or programmer, how I tend to show strong interest in the matter.

    Two things come to mind at start:

    1) Which app is at “fault” for the programming “error”? Or is it an OS related problem.

    Whom ever, find a way to communicate said errored information to the devs of apps.

    2) What if this was intentional?

    Huh??? Now as I proceed I do not mean to bash anyone entity within this thought process…

    Why would anyone program this purposly? My theory would be that if you are able to “use” another app within an app, couldnt you collect relevant information about said app, process that information, and develop strategies in return based on the findings and workings of said app?

  3. Kenny Stier says:

    After reading this, I think I’m going to give Android x86 for a spin again.

  4. Preston says:

    Google did significantly change how the activity stock works in android 5. It fixes the exact problem you talk about.

    http://www.androidpolice.com/2014/06/30/android-l-feature-spotlight-the-new-document-centric-multitasking-interface-finally-makes-sense/

    There still aren’t the right apps that would make Android a useful desktop, for me at least, bit its possible I suppose.

  5. Martin says:

    Apart from claims that android 5 might or might not fix something related to this, it’s still just a bug.

    Google+ could just set the flag to never join application stacks when opening that link. It’s just something that sometimes needs to be done joined or seperated and sometimes the parameter isn’t set right… see http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK

    There still are some possible problems like if the application is already running what happens to the current place of it’s navigation stack. Not all applications are tabbed webbrowsers. But that’s either an application problem or a problem not allowing multiple instances of the same application…

Comments are closed.