Hacker News new | ask | show | jobs
by GeneralMaximus 5503 days ago
Disclaimer: I'm a long-time Mac user and developer, but these days I mostly write iOS apps. I'm that annoying guy who mutters Cocoa method names in his dreams. I own a HTC Desire, but I've never written an Android application. Not yet, anyway ;)

Android applications are structured like web pages, even when you look at them from a developer's perspective. Besides other things, each app consists of a number of activities. An activity is the UI you see on the screen, and there's a separate activity for each piece of UI you see in an app. For example, your Twitter app might consist of an activity for the timeline, another one for sending a new tweet, another one for setting preferences, etc. It helps to think of an activity as a web page and an app as a website consisting of a number of web pages.

When you're in AppX and want to open a document/URL in AppY, you send AppY an intent, which is a fancy word for message. Android then replaces the current activity from AppX with a new activity from AppY. But that's not all. You can directly send an intent to an activity in AppY, or you can send an intent to AppY and let it decide which activity to use for handling it. You can even just broadcast the intent and let Android decide what to do with it.

So, in reality, you're not using "apps" at all. Instead, you're using a hyperlinked collection of activities, each of which just happens to belong to a collection of activities called an app. When you look at it this way, it's just natural that Android has a home button and a back button. Both those buttons work in natural, predictable ways. If I open an unread text message from my home screen and then hit the back button, I'm back at the home screen. If I open my inbox in the messaging app, navigate to the unread text message and hit back, I'm back at my inbox. What could be more natural?

(Also, IMO, the Android API and developer tools make Cocoa and Xcode look like toys. It's like comparing DirectX with BGI.)

Talking of usability: in my experience, Android is far more usable than iOS. It might not be pretty, but it manages to get nearly everything right UI-wise. Less buttons on the phone != better usability. What if your laptop had only the 26 letters and every other function was bound to a double-tap or press-and-hold action? Double tap Q for F1, press and hold M for backspace?

1 comments

As an iPhone, Android, and WebOS user hands down WebOS has the best navigation implementation of all of them. Activities are in cards. Cards are stacked in the order you use them. You can go from phone to contacts to webpage in the same stack and you can pick any item in that stack, no backbutton needed. It has a dedicated gestures area which is more powerful than 4 buttons and definitely better than one.
I imagine Android could easily display Activity switching and Activity Stacks as webOS-like cards. RIM engineers quietly admit they stole the PlayBook's app switching GUI from webOS cards.
Google did hire away the designer, Matias Duarte, from HP/Palm. I wouldn't be surprised to see more WebOS-like GUI actions in future versions of Android.