Dave, try / catch it doesn't change anything.
I checked my two phones again and I have some thoughts and observations.
1. There is problem with MagneticField sensor. It seems that this sensor gives enormously fast changing results. On Xperia P last text with magnetic fields readings are constantly changing with maximum speed (several times per second).
2. If I comment out MagneticField sensor, all becomes much more responsive.
3. It seems that all sensor readings are in a queue and the faster changes, the more results in queue, then there is a bigger lag in visible UI. When I shake several seconds Xperia P with MagneticField enabled, and leave phone without movement, then queue empties after 45-60 seconds!!! Without MagneticFields on Slow speed lag could be 4-10 seconds... With severe changes, app responds good. On much faster phone (Galaxy S5) in Fast mode queue start to be too long and range error occurs (try/catch on handler traps range error).
4. When you have simple app with one sensor readings and not too much to change on screen, all seems to work perfectly. But no more under bigger load.
5. On Xperia P Proximity sensor works, but to initialise itself it needs to be covered for 1-2 second and then it starts to show results. It's interesting.
I think, that the problem is in sending sensor results to the message queue without checking readings lag.
It should be possibility to skip sending or reading message queue by default. If you need to log all readings, this behaviour is OK, but not in other situations.
Dave, on callbacks for Accelerometer and Orientation sensor are parameters time. Is it time (timestamp?) of this event or sensor readings? How to count real lag between sensor readings and callback invoke? I tried code: