In September of last year I ditched my iPhone 3G and switched to the Android-powered HTC Desire (which I later sold in order to purchase a Desire Z, which sports a physical keyboard.) I'm sad to report that I'm now considering switching back to iOS, after less than a year on the Android platform. The following is an excerpt from an e-mail I wrote to a friend of mine whom I'd describe as a fervent Android evangelist, detailing some of the frustrations I have with the operating system and why I feel that I might be better served by iOS. I've edited it slightly to make it more readable for anyone who might come across this blog.
I really want to like the Android platform, and writing this gave me no joy. There are two reasons I'm posting it here, though. The first is simply that the purpose of this website is for me to post about my programming and my experiences with technology (as well as whatever else catches my fancy.) The second is that I hope that sharing my honest opinion about Android might be helpful to anyone considering a phone purchase.
As mentioned on Twitter, my number one complaint is having to use custom ROMs. There are always problems with custom ROMs. CyanogenMod 7 caused my phone to reboot at random. I also had problems with the Contacts app crashing. All of these issues persisted throughout multiple versions of CM7 up to and including final.
- With the ROM I'm using now (a custom Sense ROM, can't remember the exact name), I can't set the SSID/password on my WiFi hotspot because Settings crashes when I try to. I seriously haven't used a single custom ROM that hasn't had some issues with it.
- You mentioned that Google is promising quicker updates, but I'll believe it when I see it. Are they actually forcing manufacturers to do this in order to use Android branding or get Google apps, or are they just asking nicely? The latter won't work. And as far as I know, all that the Android update committee has promised is 18 months of updates following the launch of a new device. So does that mean if I release a device and then push a point release to consumers 17 months later, I've fulfilled that? All I see here is flowery language, and frankly I don't think anything is going to improve.
The fact is that it's not profitable for these manufacturers to update existing devices when they could spend the same development effort on releasing another six phones, so unless Google does something to change that, nothing will happen.
The rest are in no particular order:
- No good Exchange client available. Even Touchdown, which is expensive, is pretty bad. The HTC client is okay, but it
doesn't support important features like threading.[I later realized that this is untrue; the HTC client does support threading. I still find it cumbersome to use, and I've previously had problems with it failing to send messages without any notification of the failure. That's a pretty big problem when you're using it for work e-mail.]
- Launcher redraw, agghhhhhh. Sense is horrendous for this, but I much prefer the built-in Sense apps to their Google alternatives, so I feel like I'm stuck using it. Even on stock Android, it seems like I can't really use live wallpapers or I have to wait for the launcher to reload all the time.
- It's annoying that when I read an e-mail in Gmail on my computer, the notification for it stays in my notification bar. Also, my Gmail push seems to have stopped working of late. To be fair, it remains to be seen how the new iPhone notification system handles these things.
- I've noticed that with multiple IM clients (specifically, AIM and eBuddy) if I leave them running in the background while I'm doing other things like browsing the Internet, I'll eventually get signed out or the app will close. I don't know if this is just because they're not written correctly, but it's annoying; IM is the only thing I really use background applications for and it doesn't seem to work consistently.
- I often have trouble sending/receiving MMS. It's frustrating when someone sends me an MMS and I have to ask them to e-mail it to me instead because it won't download.
- Camera quality on the Desire Z is pretty bad. I'm certain the iPhone 4 is better in this department. I feel like my Desire Z's camera is actually worse than my Desire's camera for still photos (although it's better for video.) This isn't a strike against Android in particular, but the problem of lower-quality hardware is endemic to the platform in a certain sense.
- A lot of apps in the Android market are just very poor quality. The iPhone app store has its fair share of bad apps, but I still feel like the average quality is much higher there. In particular, any app that's available for both platforms is almost always better on iPhone. A prime example is Facebook. The Android client was horribly broken for several weeks, and regardless of that, it just doesn't support the same feature set as the iPhone version (e.g. watching videos.)
- I complained about this even before I bought an Android phone, but the Android operating system is sometimes just not very responsive. Scrolling is sometimes smooth, but rarely as smooth as on iPhone/Windows Phone 7. Minor annoyance, but an annoyance nonetheless.
- I'm not sure if you're familiar with the life cycle of an app in Android, but basically every different screen you can go to in an app is a separate "activity"—essentially a separate application. What were they thinking in designing it like this? It causes so many problems. Any time the "state" of the phone changes (e.g. you rotate the device, the phone leaves/enters roaming, etc.) the activity is destroyed and re-created unless developers manually override this behavior. This is why, for instance, the keyboard often disappears if you have it open and then rotate the phone. (Highly polished apps like Twitter handle rotation properly, but don't be fooled; it's not the default behavior. Many other apps do not handle rotation very well.) Other examples of activity recreation problems include pop-up dialog boxes disappearing and fields losing focus.
- Editing text sucks; I find that my phone never seems to do what I want it to when I'm trying to highlight or copy and paste some text.
- I've had problems on both of my Android phones with the music player pausing in the middle of a song at random. This has happened in multiple different media players. It's as though the phone thinks the headphones are being removed when they are in fact still in place.
- I like being able to set alarm/ringer/media volume separately (although the iPhone can also do this), but I don't like that the defaults on Android aren't very sensible. For instance, if I have my ringer silenced, it probably means that I also want my media silenced. But that's not what happens if I just use the volume button; I have to actually go into settings and change the media volume separately.
- Sometimes Google Talk just flat out refuses to start for me until I reboot my phone. This happened on multiple ROMs. On the Desire I noticed that it seemed to refuse to start when I was low on internal storage. I'm not sure why it does it on my Desire Z. This should be a core platform feature on par with BBM, but it seems to be very poorly supported.
- From a developer perspective, I hate paying a development fee to Apple to be able to install my apps on a non-jailbroken device. I hate that once you've written an iPhone app, they basically blackmail you into continuing to pay them because otherwise they take down your app, which means that it may not be accessible to paying customers if they need to wipe their phone and re-install their apps. I hate their greedy policies with regards to content subscriptions. I hate their underhanded payment system which is, as a matter of statistical certainty, allowing them to make interest on millions of dollars that are nominally owed to developers but will never actually be paid. In general, I hate that they treat their developers like serfs just because they can, even though those same developers made their platform what it is today.
I hope that properly illustrates how much I hate Apple's policies, and I hope that it underscores the significance of what I'm about to say: from a pragmatic perspective, I'd still rather be developing for iOS because Google's development tools are complete garbage. I write all my code in vim, so I'm really not that picky, but I can only take so much of using Eclipse and having it literally delete my art assets from the file system. (Not just removing them from the project - it literally deletes the files, seemingly at random. I've never lost any work because of this, but it's extremely frustrating nevertheless.) Not to mention the Android emulator: it's practically unusable for regular apps, and for games, forget about it. You're lucky if you get 5 FPS.
Even if I buy an iPhone, I do still want to finish my game for Android. The code is cross-platform, so if I could compile and test it using Xcode in the meantime... even just using the iPhone simulator, since it can actually run games at a reasonable framerate... it would save me a lot of headaches. Either way I'll have to compile my app for Windows or iOS to do any marketing; taking screenshots of an Android app is difficult, and taking video is, as far as I can tell, impossible unless you have a phone with HDMI out and a capture card. Ridiculous.
- The behavior of the back button is inconsistent, and developers use it as
a crutch rather than thinking about and carefully designing a proper workflow
through their applications. I was arguing about this behavior with someone on
Reddit a while ago, and I found a good comment on Hacker News about it:
I just got an Android with that great Virgin Mobile deal, and I was surprised at just how much the Back button is used in almost all contexts. It's severely overloaded: want to get out of an on-screen keyboard? Back. Want to move back a screen? Back, except when it's Google Reader that opened a Browser window, in which case it takes you back to the previous page that Browser had. Back through a menu? Back. Back to a previous page in Browser? Back. It's as if people just substituted the button for any instance in human language where "back" was used."...(and another)...
"Back" to some random place most of the time.In fairness, I'm of two minds about this because the back button does save a lot of screen real-estate by removing the necessity for on-screen navigation controls. However, I'm not sure how much of an advantage that is in the face of the confusion it sometimes causes.
1. receive email notification for two messages.
2. click notification bar
3. go to gmail app.
4. open first message and click a link.
5. you are now in the browser. (clicking back will close the window, but you want to read it later!)
6. you long press HOME button (hoping to select gmail and read the other message)
7. gmail is not in the open app list (WTH?!)\
8. you curse, click home, find the gmail app, click it.
9. now you are on the message with the link
10. press BACK
11. now you are on the message list (aha! not you home screen you came from!)
12. click the 2nd message and read it
- [This wasn't included in my e-mail to my friend, because I didn't know about it at the time. I'm adding it now because it's fairly important.] Android can actually lose SMS messages. That's completely unacceptable on a phone.