In a recent question I asked I was directed to this website: http://developer.android.com/design/index.html
Amazing site, but it didn't answer one particular question: What are the best practices/design patterns to apply in the design of an application code-wise?
I did lookups for MVC/MVP, etcetera, and while that yields results, it's only about the actual implementation of said patterns, rather than other available options and such.
I tried decompiling and analyzing various apps Android installs by default, like the Market, but I couldn't really find a structure in Google's code. Does anyone have tips on how to setup Android apps in such a way they are maintainable, extendable, etc. I am aware of the wide meaning of these words and that they are purely subjective to the programmer for that matter, but I can't express it any differently.
One best practice I already encountered is one view per Activity and having lots of Activities in the app for the backstack to work properly, but other than that, I have no clue how to actually setup the Activity itself.
You should watch (from Google IO 2011): http://www.youtube.com/watch?v=WGIU2JX1U5Y
It's not about ICS but about honeycomb but it's still very interesting...
You will see that the ActionBar (there are also some libraries that make you implement the ActionBar on older versions of android) is getting more important and can be found in most google apps for android...
Also the ViewPager is used alot (for swiping horizontally between different tabs/views), like in the market...
To keep your project clean, you could give every activity a separate xml file, recurring elements you use should be kept in a separate xml file that you can include in every other xml file (footers, headers, separators,...)
Hope this helps you along!