屏幕方向的变换是由Sensor决定的。当Sensor变化时,会调用到
frameworks/base/core/java/android/view/WindowOrientationListener.java文件中的onSensorChanged()函数,此函数又会调用calculateNewRotation()函数。calculateNewRotation会根据orientation,tiltAngle, mRotation三个变量去做相应判断,如果条件符合,最后会调用onOrientationChanged()函数。
对比转屏正常和较慢的设备发现(同一种设备和同一版本的代码),正常的设备 calculateNewRotation()会被调用几次,然后条件符合,就会调用onOrientationChange()函数,较慢的设备 calculateNewRotation()的调用次数几乎是正常设备的两倍,条件符合,才会调用onOrientationChange()函数去实现转屏。