For some reason, the Android back button is topical again. Christopher Du Rietz and John Gruber both say that it's a bad idea. I've thought so, too, an year and a half back, but I wanted to see if anything changed since then, or if my thinking evolved. So, let's look at arguments for and against the back button.
Arguments For the Back Button:
Consistency: No matter what screen you're on, there's almost always a previous screen to go back to, so it makes sense to have a standard button for it, for the same reason the browser has a back button, or iOS devices have a home button. Don't leave it to apps, because they could handle it differently.
In addition to consistent in-app navigation for all apps, you also want to use the same system to navigate out of an app as you use to return to the previous screen within the app. On iOS, you navigate within an app by using the on-screen back button, but when you reach the top level of the app, you have to use the physical home button to navigate out. This feels like apps have rigid boundaries rather than things flowing together smoothly. Android back button navigation feels more natural.
In addition to navigation within an app and navigation out of an app to the home screen, you also want consistent navigation across apps. This is important since Android apps blend together smoothly by invoking each other. In fact, apps on Android are composed of activities, one for each screen, which can be invoked from other apps. For example, the compose screen of an email app is a different activity from the inbox. Activities from different apps intermingle smoothly into an activity stack, to the extent that you navigate between apps without noticing it, and the back button is critical for this. When you click on a link in an email and decide to tweet it, you have an activity stack consisting of Email -> Browser -> Twitter. Pressing back from Twitter returns to the browser, and pressing back again, to email. This kind of seamless navigation requires a back button independent of a particular app.
This kind of smooth navigation between apps is much better than on iOS, where each app is a world unto itself, and there's a lot of friction in moving between apps. So iOS apps have to have in-app browsers for accessing links, with different functionality and interfaces and you sometimes need to tap the Open In Safari button, whereas Android apps just launch the browser, which works better.
So, to summarize, back button navigation is consistent for:
- in-app navigation, no matter which app you're using.
- navigation out of an app to the home screen.
- navigation across apps in an activity stack.
Tactile feedback: Well-implemented hardware buttons, like on the iPhone, are easier to use than on-screen buttons. Unfortunately, many Android phones squander this advantage by using capacitive buttons (like on the Nexus S) or by using OS-controlled on-screen buttons (like on Ice Cream Sandwich/Galaxy Nexus).
Arguments Against the Back Button:
It's not labeled: On-screen buttons can be labeled to tell the user where he's going to go if he clicks the button. It should be obvious why that's better.
Intra vs inter app navigation: But there's a deeper problem — it could take you to different places depending on where you navigated from, which could even be another app. John puts it well:
Here’s one thing I don’t like about the Android Back button that I’ve never seen a counterargument for: it presumes that you, the user, remember the activity stack. If you turn your phone on and you’re looking at a web page in the browser, if you don’t remember what you were doing immediately before opening the web page you’re looking at, you have no idea where you’re going to go if you hit the Back button. Could be another app, could be another web page, could be the home screen. And if hitting the Back button takes you somewhere you didn’t want to go, there’s no Forward button to reverse it. It’s like leaving a breadcrumb trail in the dark — you have to remember where the breadcrumbs are because you can’t see them. Drove me nuts.By contrast, iOS back buttons always navigate to another screen in the same app, and so are less confusing. Yes, that means that apps have rigid boundaries and some friction switching between them, but it also means that the back button is less confusing, because it never takes you to another app or to the home screen.
Back or Up? Forget for now that the back button can take you to another app. Assume it takes you elsewhere within the current app. But where? Most people would say that it takes you back to the previous screen within the app, the one from where you came. But that's not always true. Here's an example: from the home screen, open Evernote. It starts by showing you the last opened note. Press back. Where do you expect to go? The home screen, right? But it actually takes you to your list of notes — a screen that you've never seen before and isn't therefore in the activity stack.
And no, Evernote's not doing anything wrong. They could "fix" it by always opening the list of notes and forcing you to navigate to the note, so that the back button takes you back to the previous screen, but that would make it less usable.
The real problem is with the back button, which sometimes behaves like the browser's back button by taking you to the previous screen in the activity stack, and sometimes like iOS's back button by taking you one level up in the app irrespective of history. It should just make up its mind and do one thing consistently.
Doesn't work well with long press app switching: We've seen how the back button can take you back in the activity stack or to a brand new screen. But it gets worse than that. It can take you to another activity stack. Yes, Android has multiple activity stacks. If you were to navigate from the home screen to Evernote's list of notes, and then to a specific note, then press the home button and go to Google Maps, you have two activity stacks:
Home -> Evernote list of notes -> Evernote note
Home -> Google Maps.
Now, while in Maps, you can long press the home button to bring up the list of apps, and tap Evernote, and it shows you the note you were viewing. Now what do you expect the back button to do? One might expect it to take you back in the current activity stack (Evernote's list of notes) or to the screen you came from (Maps). This is confusing. But it's even worse — it does both. It first takes you back in the same activity stack, to the list of notes, but when you press back again, it takes you to the previous activity stack, to Maps.
[Actually Evernote has one more level of hierarchy, but I'm eliminated that for simplicity — it doesn't change anything here.]
It makes you go in circles: Christopher explains:
If I get a mention on Twitter and open up the Android Twitter app to check it out, I’m (naturally) sent directly to the tweet mentioning me. Ok, so I want to get back to the main timeline, what do I press? The answer is: you can’t. Pressing the back-button, which is the only real candidate for this action, will take you wherever you where before seeing this screen, which in this case was the home screen, exiting the app. Hmm, so how do I get to the main timeline? I have to open Twitter again, showing the same tweet I saw before and now press the back button, and it will take me to the main timeline.Notice that the user's going around in circles: A -> home screen -> A -> B. I've had the same experience with other apps. Obviously, it's stupid and irritating to go around in circles. Why on earth can't I go from A to B without going elsewhere, returning to A and then going to B?
Doesn't work well with modal screens: If the user's writing a review in Google Maps and presses the back button, what does it do? The user has no clue, because it's not labeled, and doesn't even make sense in a modal screen, by definition — you want explicit Post Review and Discard buttons. But you can't remove the global back button; it's always there, whether it makes sense or not.
Learning curve: Android back buttons have a learning curve because you have to remember that some controls are on-screen and some are off-screen.
So, to summarize the problems with the Android back button:
- Users don't remember the activity stack.
- The back button can take you to another screen in the same app or to another app.
- The back button takes you to the previous screen in the app, except when it takes you to a screen you never visited.
- It can take you to another activity in the current activity stack, or to another activity stack, or both.
- It makes you go around in circles.
- It doesn't work well with modal screens.
This is way too much complexity. I couldn't understand or predict the behavior of the app button (despite being a programmer who builds mobile apps) and resigned myself to it behaving arbitrarily, taking me where I didn't want to go, and having to find my way back to where I did want to go. iOS's back button works like a charm, in comparison. The price of rigid boundaries between apps and friction in switching between apps is small in comparison to this massive confusion.