When I use Choreographer I was thinking that it's will fire the doFrame every 16 ms to synch with the vSynch. But seam it's not the case when I look the log :
04-04 01:02:13.430: I/doFrame(5348): 83955391747085
04-04 01:02:13.443: I/doFrame(5348): 83955405796564
04-04 01:02:13.451: I/doFrame(5348): 83955413367397
04-04 01:02:13.461: I/doFrame(5348): 83955421952814
04-04 01:02:13.468: I/doFrame(5348): 83955430145522
04-04 01:02:13.474: I/doFrame(5348): 83955438113751
04-04 01:02:13.497: I/doFrame(5348): 83955460370652
04-04 01:02:13.515: I/doFrame(5348): 83955477302114
04-04 01:02:13.532: I/doFrame(5348): 83955494233669
04-04 01:02:13.549: I/doFrame(5348): 83955511161610
As you can see their is much less than 16ms between each call to doframe. So now I don't understand how Choreographer work :( What exactly mean calling Choreographer.postFrameCallback ? how it's possible that it's can be only 7ms between 2 doFrame event ?
120fps screens exist, and on Android it's been a while! Also, 120fps computers exist, and I suspect emulators can also be 120fps on those computers. For those devices, the interval between frames is 120th of a second, which is about 8ms, close to the 7ms you're getting.
So yeah, every time you read or heard something like "you got less than 16ms to do everything you need to do on the main thread, including rendering", that became a lie several years ago.