BroadcastFrameClock
class BroadcastFrameClock : MonotonicFrameClock
kotlin.Any | |
↳ | androidx.compose.runtime.dispatch.BroadcastFrameClock |
A simple frame clock.
This implementation is intended for low-contention environments involving low total numbers of threads in a pool on the order of ~number of CPU cores available for UI recomposition work, while avoiding additional allocation where possible.
onNewAwaiters will be invoked whenever the number of awaiters has changed from 0 to 1. If onNewAwaiters fails by throwing an exception it will permanently fail this BroadcastFrameClock; all current and future awaiters will resume with the thrown exception.
Summary
Public constructors | |
---|---|
A simple frame clock. |
Public methods | |
---|---|
Unit |
cancel(cancellationException: CancellationException = CancellationException("clock cancelled")) Permanently cancel this BroadcastFrameClock and cancel all current and future awaiters with cancellationException. |
Unit | |
suspend R |
withFrameNanos(onFrame: (Long) -> 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. |
Inherited extension functions | ||
---|---|---|
From androidx.compose.runtime.dispatch
|
Properties | |
---|---|
Boolean |
Inherited properties | |
---|---|
Public constructors
<init>
BroadcastFrameClock(onNewAwaiters: () -> Unit = null)
A simple frame clock.
This implementation is intended for low-contention environments involving low total numbers of threads in a pool on the order of ~number of CPU cores available for UI recomposition work, while avoiding additional allocation where possible.
onNewAwaiters will be invoked whenever the number of awaiters has changed from 0 to 1. If onNewAwaiters fails by throwing an exception it will permanently fail this BroadcastFrameClock; all current and future awaiters will resume with the thrown exception.
Public methods
cancel
fun cancel(cancellationException: CancellationException = CancellationException("clock cancelled")): Unit
Permanently cancel this BroadcastFrameClock and cancel all current and future awaiters with cancellationException.
withFrameNanos
suspend fun <R> withFrameNanos(onFrame: (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 monotonically increasing; after a call to withFrameNanos completes it must not provide the same value again for a subsequent call.
Properties
hasAwaiters
val hasAwaiters: Boolean