I've read an increasing number of articles on the web recently from people who fervently believe that the Android platform is dead before it ever really got started. The common mantra going along with this is that Android is late to the party, and they didn't bring anything new with them. First of all, I'm not sure how anyone getting into the game at this stage could be considered late, as the smartphone market is still quite infantile and rapidly developing...but I digress. Personally, I am very surprised by this perception, and have to wonder why the (mainly) iPhone community is so quick to attack?
I am a daily user of both the iPhone and Android platforms, and develop applications on both platforms as well. There are things about both that I love, and there are things about both that I hate; both as a user and developer. I'm not the expert, and this is not an exhaustive comparison, but here are reasons that I believe Android deserves your attention ("you" being the developer) and why it is not dead...even if it doesn't doesn't immediately become king.
For context, as I'm writing this the latest software versions in the market are Android 2.1 and iPhone 3.1.2
The User Experience
There are some features that Android provides to the user that the iPhone will need to incorporate eventually, in my opinion. And I'm discussing them from a user perspective (not technical discussions of memory management, code efficiency, etc.)
Customizing Home Screen (Widgets)
The mobile user has severe A.D.D.; myself included. The faster the relevant content arrives to me, the less annoyed I am at how long I had to wait. Checking the basics, like the Top 10 on my To-Do list or my next upcoming appointment, should not require me to run each application individually. With Android, that data can live on my home screen in the form of widgets, and I can view it all right on the desktop (background services help a lot with this also, but we'll get there). And the data is REAL, it is not an image file stored and plastered as wallpaper.
My brain (and my life) works a LOT like a stack. Often, what I am working on currently has something pushed on top of it that requires attention. When I am done with that higher priority item, I need to step right back to doing what I was beforehand. The Android concept of working follows this paradigm very well. If I'm working in an application and need to send a quick email, I can bring email up on top of my current activity and do what I need to do. After I am done with the email, I can go back to my previous activity and it is uninterrupted. The same holds true if I get interrupted by a text message or other priority notification, I can load this activity ON TOP of what I was doing. The tag line here is that I don't have to close my old thoughts to start a new thought.
The Developer Experience
From the developer perspective, Android offers some neat opportunities as well.
Background Processing (Services)
Last year, when Apple announced that Push technology would be available to the iPhone, there was an uproar of excitement. Suddenly, applications could grab the user's attention without the need for the application to be running. Push technology definitely has it's place, but I do not believe that it can ever truly replace a background service in all instances. Sometimes, developing a complete back-end server application and connecting with the Apple service is just too much overhead to put in to a project that just needs a method of notifying the user or doing simple work in the background. Mobile devices may be resource constrained compared to the desktop platform, but I shouldn't be afraid to run a few concurrent processes locally. Shoot, I can do that on an 8-bit microcontroller.
System Modularity (Intents)
Intents embody the concept of inter-process communication and make it easy to modularize a system. This architecture brings up a neat realization: once your app is using these to talk to itself, it's a very small leap before apps start talking to each other. This can be especially useful if you embrace the design philosophy that mobile apps should not have too many jobs, and that they should do 1-2 tasks efficiently. Using an architecture based around Intents, complex tasks are now possible, while still holding true to the simplicity of each individual application. This also provides great flexibility into way of hooking up with the core applications on the device (like mail and contacts) as just another module to your system.
I love my iPhone, and I love developing iPhone applications. There are a lot of things on both the user and developer front that I prefer about Apple and the iPhone SDK. I've chosen not to delve into them because so many people already have. Any of the articles that I mentioned in the beginning spend a great deal of time touting the iPhone's better features, so I'm just going to acknowledge (and agree) that they exist. While these features alone may not skyrocket Google and cripple Apple, I believe that they are definitely enough to point out that Android has brought some new tricks to the party, and you probably ought to take notice. I believe that they ARE enough to keep Apple from crippling Google straight out of the gate.