{% setvar book_path %}/reference/androidx/_book.yaml{% endsetvar %} {% include "_shared/_reference-head-tags.html" %}

InfiniteAnimationPolicy

public interface InfiniteAnimationPolicy extends CoroutineContext.Element


Provides a policy that will be applied to animations that get their frame time from withInfiniteAnimationFrameNanos or withInfiniteAnimationFrameMillis This can be used to intervene in infinite animations to make them finite, for example by cancelling such coroutines.

By default no policy is installed, except in instrumented tests that use androidx.compose.ui.test.junit4.ComposeTestRule.

Summary

Nested types

public static class InfiniteAnimationPolicy.Key implements CoroutineContext.Key

Public methods

default @NonNull CoroutineContext.Key<@NonNull ?>
abstract @NonNull R
<R extends Object> onInfiniteOperation(@NonNull SuspendFunction0<@NonNull R> block)

Call this to apply the policy on the given suspending block.

Inherited methods

From kotlin.coroutines.CoroutineContext
From kotlin.coroutines.CoroutineContext.Element
default @NonNull R
<R extends Object> fold(
    @NonNull R initial,
    @NonNull Function2<@NonNull R, @NonNull CoroutineContext.Element, @NonNull R> operation
)
default E
default @NonNull CoroutineContext

Public methods

getKey

default @NonNull CoroutineContext.Key<@NonNull ?> getKey()

onInfiniteOperation

abstract @NonNull R <R extends Object> onInfiniteOperation(@NonNull SuspendFunction0<@NonNull R> block)

Call this to apply the policy on the given suspending block. Execution of the block is determined by the policy implementation. For example, a test policy could decide not to run the block, or trace its execution.

The block is intended to be part of and will therefore be treated as an infinite animation, one that after returning from onInfiniteOperation will call it again. If the block is not part of an infinite animation, the policy will still be applied.