We do have the desired delay mechanism implemented in dalvik/vm/compiler/Compiler.c
dvmLockMutex(&gDvmJit.compilerLock);
/*
* TUNING: experiment with the delay & perhaps make it
* target-specific
*/
dvmRelativeCondWait(&gDvmJit.compilerQueueActivity,
&gDvmJit.compilerLock, 3000, 0);
dvmUnlockMutex(&gDvmJit.compilerLock);
:
Currently the delay is set to be 3 seconds. As the comment and your experiment suggested a target specific value is probably needed here to improve the app startup time.
If you look at ./base/core/java/android/app/ActivityThread.java, you will see a bunch of ensureJitEnabled() calls to enable the JIT if the app is believed to be in the post-startup phase. If specifying a larger startup delay doesn't help the app in question, you probably want to check these ensureJitEnabled() calls to see if any of them jumps the gun.
-Ben