MonotonicFrameClock
@JvmDefaultWithCompatibility
public interface MonotonicFrameClock : CoroutineContext.Element
Provides a time source for display frames and the ability to perform an action on the next frame. This may be used for matching timing with the refresh rate of a display or otherwise synchronizing work with a desired frame rate.
Properties
override val key: CoroutineContext.Key<*>
Functions
public suspend fun <R> withFrameNanos(onFrame: (frameTimeNanos: Long) -> R): R
Suspends until a new frame is requested, immediately invokes onFrame
with the frame time in
nanoseconds in the calling context of frame dispatch, then resumes with the result from
onFrame
.
frameTimeNanos
should be used when calculating animation time deltas from frame to frame as
it may be normalized to the target time for the frame, not necessarily a direct, "now" value.
The time base of the value provided by withFrameNanos
is implementation defined. Time
values provided are strictly monotonically increasing; after a call to withFrameNanos
completes it must not provide the same value again for a subsequent call.