Wow, where did this rant come from based on replying to an over three year old post? Android 2.3 introduced a greatly expanded NDK, with native APIs for events, and dispatch to those APIs does not go through Java code. Then you throw in two completely irrelevant issues to this discussion, and on the first one (audio latency) there has been much discussion on the issues around this such as:
http://www.rossbencina.com/code/dave-sparks-on-android-audio-latency-at-google-io-2011 which was from over a year ago and you can easily find information on progress on that front such as
http://createdigitalmusic.com/2012/07/android-high-performance-audio-in-4-1-and-what-it-means-plus-libpd-goodness-today/
Finally, your third point is just wrong. There is not one Dalvik VM running everything, like you seem to think -- each app gets its own processes, running its own VM. So if an app is doing something that causes it to need to do a GC, this won't block your own process's VM. (And even if your own process does a GC, you can easily run native threads in that process that aren't attached to the VM and so won't get blocked by anything the VM does.) These kinds of interactions between processes are governed almost entirely by the kernel's scheduler, and Android does a fair amount of stuff (such as its use of background vs. foreground cgroups) to get the scheduler to avoid letting work done by background apps impact the running of foreground apps. In fact, one of the things that has been done for the improved audio latency is introducing a new scheduling group for low latency audio threads that further helps the kernel schedule them w.r.t. other threads in the system.
If you're going to remain this stubborn and refuse to accept the fact that serious developers don't NEED or WANT to go through bloated Java services just for the amusement of conforming to your 'framework', then at a certain point developers are just going to have enough and just leave for iOS and/or WinRT. It doesn't matter how much marketshare you have - a 'capital strike' by developers is still a tool we can wage to knock some sense back into this 'Android engineering team' that seems to lack the very basics of embedded sy systems engineering.
For the record - here are some more things you and your team are getting dead wrong -
1 - 100/150ms audio latency (seriously - 40ms is not even considered 'low latency' - 100/150ms is just an absolute disaster - do you realize that with latencies like this, you are the laughing stock of almost every other engineering team in the world right now? The PS3 audio server has 40ms latency, and that is considered 'bad'.)
2 - No exposure of SurfaceTexture (yes, real 'serious devs' need direct texture support to avoid having to do costly CPU to GPU blits - seriously - console SDKs offer this since Day One)
3 - No ability to control which services run through your runtime native app - like, I dunno, lots of Java services which do periodic checkups (worst offenders being Google Play Store and Gmail) and proceed to absolutely DESTROY your runtime performance - every time those services get invoked, the wonderful 'Dalvik' garbage collector does its handiwork and adds an additional 22ms delay. Seriously - how am I supposed to be creating a realtime app that runs at a steady 60fps if I can't 'control' which of these pre-installed and bloated services run right through my runtime lifecycle?
Is this 2012 or is this 1980? Because these are 'essential' things to get right from Day One. The fact that Android still doesn't have them is worse than aggravating - it's embarrassing for your company. Please do take note - developers will only have patience for so long until they start deserting this platform altogether. WinRT might give you serious competition from which you wont' be able to recover from if they play their cards right.
On Friday, October 23, 2009 8:54:20 PM UTC+2, Dianne Hackborn wrote: