Here are some of the basic tenets to designing android apps that we follow in-house. Hope it helps you design and develop better apps.
1. Go native.
The best user experience can be achieved only when using the native development environment. Apps built using cross-platform development tools will not cut it.
2. Remember form factors.
Your app will be run on phones from different manufacturers, with different size of displays and resolutions, on portrait and landscape as well as on tablets and possibly e-readers. Don’t hard-code your screen layouts with a specific form factor or phone in mind.
3. Support as many versions as possible.
Android OS versions are coming out thick and fast, as are the phones. At any time, expect your target user base to be spread across at least 3 different OS versions.
4. Be prepared for missing components.
Not all devices have all the bells and whistles such as front cameras, accelerometers, and gyroscopes. Use them in your apps, by all means, but don’t depend on their presence either.
5. Stick to the basics.
Most people understand standard android app behavior – so follow the same standards. For example, if your app has a menu, it has to be accessible from the menu button.
6. Be prepared for lack of connectivity.
Connections on mobile phones will drop. Program defensively for such situations.
7. No time-consuming processing in the UI thread.
Use multi-threading wisely and avoid holding up the UI/main thread. Even a sub 2-second frozen screen is enough the turn a customer away.
8. Don’t hog the resources.
The Android phone is thin on resources and it has to be shared between all the apps. Plus, Android provides users with easy access to data such as how much memory and battery you app is consuming. As it is, most of the Android phones have to be re-charged every day. If your app is seen to be draining a lot of the battery, it will be the first to be un-installed.
9. Don’t force users to login everytime.
Typing is never easy, even with swype or SwipePad installed. If the user has to login to access the app functionality every time, your app will never get used. Avoid login altogether if you can. If you can’t, then provide an explicit logout and leave it to the user to decide whether she wants to be permanently logged in or not. Remember, a phone is a personal device and most often not shared with anybody else. How many times have you logged into google mail from your Android? Imagine if you had to go through the login process everytime!
10. Infer as much as possible.
If location information is required for your app, get it from the phone whenever possible. Don’t ask the user to choose the location from a long list.
Bonus. Design for performance.
If you have to choose between easy coding/maintenance vs. better performance, always choose the latter. Check out the performance optimization notes at developer.android.com for more details.
Remember, a badly designed web site may survive, but a badly designed app will surely die.