Getting Started with Android Development
alexlod.com
alexlod.com
Understand component lifecycle. Understand it well enough to know you have to design your app around it, because you can't subvert it. Do this first. Do not write code before you understand this. A good way of understanding this is to override all the lifecycle methods in Activity and log them, then watch what happens. Understand that Android can "destroy" both individual component instances and whole processes. Understand that you can't thwart "destroy" by holding a reference.
Understand Android's support for a data model in a sql database, abstracted by ContentProvider, and how to build an observer pattern around this.
Understand Android's support for concurrency, enough that you know the limitations.
As someone who has a decent grasp on the lifecycle part, could you sprinkle the other two points with a link or two? Or .. a general direction? "Enough to know the limitations" for example is .. hard to follow-up on.
This works well in Android where each process's maximum heap is something between 16 and 48MB, and keeping your data model in a database is a way of continuously persisting it.
There are exceptions. You probably would not want to build a CAD program this way. Instead you would take the performance hit to rebuild your POJOs after the component they are contained in gets reaped.
Though looking at developer.android.com it does seem that it would be safe to target 2.3 as a minimum.
http://developer.android.com/about/dashboards/index.html
Unlike with iOS where it is easier for users to upgrade their OS if their phone supports it, Android version upgrades come most often when people upgrade their phone and that means at the end of a 2 year contract for most people.
Targeting the most recent Android version seems like a poor way to get people to use your app.
Sure, if you target 4.1, you can't necessarily use every single new feature in Android on older devices. However, from a design/UI point of view, Android's backports of many new features (and projects like ActionBarSherlock) such as the action bar means you can design for 4.1 and have the code work with many previous versions.
I agree with the grandparent post: design for 4.1 and set 2.2 as a minimum. In cases where you want to use new APIs, you can use conditional classloading techniques.
Read: http://developer.android.com/guide/topics/manifest/uses-sdk-...
There's also the ViewPagerIndicator library.
Jake Wharton really has done the Android world a massive favour.
Although I've been developing on android since the beta SDK in 2008..
I would advise anyone beginning Android development to avoid third party tutorials as much as you can. Only use those if you cannot find a specific topic you need in the Android guide.
Don't fight it: learn Eclipse+ADT and Java, and yeah Emacs M-. is F4 in Eclipse ;-)
Using Emacs and the bare SDK tools works just fine for me, and is easy to do.
Eclipse felt too heavyweight on the netbook I use to code. (I still find it amusing that emacs is the light-weight solution).
I suspect that it's only loosely correlated to the number of devices in the wild running that version, but very tightly correlated to the users likely to download an app that you write.