Understanding Variable Refresh Rate on Android Devices and How to Control It
This article explains what variable refresh rate is on Android, how the platform determines the final refresh rate when multiple apps request different rates, and provides detailed SDK and NDK methods—including DisplayManager listeners, Surface.setFrameRate, and AChoreographer callbacks—to query and set refresh rates, as well as the underlying SurfaceFlinger vote and policy mechanisms that enforce these settings.