Skip to content
Casheeno
All posts

Frame pacing on low-end Android

Sixty frames per second is not the goal. Consistency is. A steady thirty feels far better than a jittery fifty-five.

By

Frame pacing on low-end Android

The device most of our players own is not the device on our desks. It has a mid-range chip, a full storage partition and eleven apps in the background - and it is the one that matters.

Variance is what people feel

A dropped frame every few seconds reads as jank far more strongly than a lower but stable rate. We measure the ninety-fifth percentile frame time, not the average.

The usual culprits

  • Allocating inside the frame loop, then paying for garbage collection
  • Layout work that could have been done once
  • Decoding images on the main thread
  • Overdraw from stacked opaque backgrounds

Test on the real floor

We keep a shelf of genuinely cheap phones. An emulator on a workstation will happily tell you everything is fine.

Budget the frame

At thirty frames per second you have thirty-three milliseconds for everything. Writing that number down changes how people argue about features.