Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This article is obviously written from a developer's perspective but as an end user my problem with Android is simply that I have yet to find any device I enjoy using. I enjoyed WebOS, unfortunately it was limited by subpar hardware, and I've enjoyed my brief encounters with WP7. The two Android devices I've owned just felt seriously half-baked and perpetually in a state of flux. I feel like Google applies their mindset for developing web apps to Android whereas some of the other phone makers are approaching it more like releasing a finished product. In the last year alone I feel like I've had at least 3 different GUIs for the Android Market for example. I went from mostly stock Android to the MOTOBLUR bastardized version with an update for my Droid X. I'm all for improvements when needed but too many of these changes are just completely arbitrary. It reminds me of the old Windows upgrade shuffle where some critical things got moved around for no obvious reason. Going back to developers I can understand why supporting 2-3 major versions, dealing with dramatically different screen sizes, etc just seems like too much trouble. I think some of these iOS-only hold outs would be more inclined to support WP7.


It's a question of preferences I guess.

I have both an iPhone 3GS and a Galaxy S. Surely, the 3GS is a little old now, however it is upgraded and I like its design more than iPhone 4. I sometimes have days when I switch between them depending on my mood. In general I prefer my Galaxy S over my iPhone.

The iPhone does have better 3D games. Maybe that's because Android upgrades are so slow to reach customers, so the sane thing to do for developers is to target older versions of the OS and be mindful about lower-end devices.

    I can understand why supporting 2-3 major versions, 
    dealing with dramatically different screen sizes, etc 
    just seems like too much trouble
Meh, you have to do that already for iOS. The 3GS is still on sale and lacks the retina display, so it has a lower resolution. Then there's the iPad, which is completely different. Also you should expect a future iPhone model with a bigger screen.

Making your interface scale from smaller to larger is a given nowadays. Maybe more problematic on Android, however when developing for Android you save time in other areas as IMHO, Android's APIs and the environment on the whole is higher level and more flexible.


Oh, no, it's on an entirely different level. You not only have to deal with elastic screen size, you also can't tweak to pixel-perfection nearly so easily as you can with iOS. If this were all that was wrong, Android would be better. However, due to fragmentation, any app with nontrivial data parsing/caching/display requirements that wants to be both widely usable as well as robust and stable needs to (in my experience):

1) Use the compatibility library for lazy-loading and easy reloading of data via CursorLoaders and SimpleCursorAdapter. This means mostly abandoning ArrayAdapter (it can easily cause eternal garbage collection if your dataset is slightly too object-heavy), assuming your data is mostly expressed in rows in the SQLite database.

2) Use Content Providers, as this is the only simple way to make the CursorLoaders work. Lots of boilerplate and semantics to accidentally get wrong, and URI overhead that you really don't give a damn about.

3) Either use a service or something resembling one that's initialized in Application#onCreate() to make API calls that store into the database (having them run inside an activity can cause nasty bugs if you're not careful as AsyncTasks are unceremoniously killed when rotation causes the activity to be killed and recreated)

I'd have to say as a developer of both iOS and Android, iOS is way, way more flexible, and gives you better APIs, and frees your mind to work on interesting problems. Android has too many development dead-ends that are easy to waste time on, and an irritatingly slow build process, if you want to ensure your build doesn't have any bad information from dirty caches that failed to clean. I can't say how many times I switched git branches only to find images and color resources still stuck on old values, even when I was exporting to deploy the apk.

tl;dr: Even if Android is worth developing for, it's still a time suck because a lot of little things cause problems. Nowhere is it made more clear that simplicity requires complexity than in the comparison between iOS and Android, because Android shoves all of that complexity in your face with not a whole lot in terms of guidance to guide the way. Meanwhile, Apple's documentation is world-class.

EDIT: not to mention different devices appearing differently because of stupid default themes, the lack of a stable image loader service that doesn't cause memory and application response issues at volume, crashing inexplicably because some bitmap refused to decode, random devices with non-compliant h.264 decoders failing on perfectly valid videos - randomly during successful playback, too! - vocal commenters/raters using extremely old devices complaining about the lack of support, occasionally nondeterministic state preservation when paging out views/activities, and a fuckton of other shit that's annoying as hell.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: