# InfiniteAnimationPolicy

Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/platform/InfiniteAnimationPolicy.kt+class:androidx.compose.ui.platform.InfiniteAnimationPolicy) Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.1.0) Common/AllAndroid/JVM
- Cmn

  ```
  interface InfiniteAnimationPolicy : CoroutineContext.Element
  ```

*** ** * ** ***

Provides a policy that will be applied to animations that get their frame time from `https://developer.android.com/reference/kotlin/androidx/compose/animation/core/package-summary#withInfiniteAnimationFrameNanos(kotlin.Function1)` or `https://developer.android.com/reference/kotlin/androidx/compose/animation/core/package-summary#withInfiniteAnimationFrameMillis(kotlin.Function1)` 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 |
|---|
| `object https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/InfiniteAnimationPolicy.Key : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.coroutines/-coroutine-context/-key/index.html<https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/InfiniteAnimationPolicy>` |

| ### Public functions |
|---|---|---|
| `suspend R` | `<R : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?> https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/InfiniteAnimationPolicy#onInfiniteOperation(kotlin.coroutines.SuspendFunction0)(block: suspend () -> R)` Call this to apply the policy on the given suspending `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/InfiniteAnimationPolicy#onInfiniteOperation(kotlin.coroutines.SuspendFunction0)`. | Cmn |

| ### Public properties |
|---|---|---|
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.coroutines/-coroutine-context/-key/index.html<*>` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/InfiniteAnimationPolicy#key()` | Cmn |

### Inherited functions

From [kotlin.coroutines.CoroutineContext](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.coroutines/-coroutine-context/index.html) `open operator https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.coroutines/-coroutine-context/index.html` `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.coroutines/-coroutine-context/plus.html(context: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.coroutines/-coroutine-context/index.html)` Cmn From [kotlin.coroutines.CoroutineContext.Element](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.coroutines/-coroutine-context/-element/index.html) `open R` `<R : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.coroutines/-coroutine-context/-element/fold.html(initial: R, operation: (https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.coroutines/-coroutine-context/-element/index.html, R) -> R)` Cmn `open operator E?` `<E : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.coroutines/-coroutine-context/-element/index.html> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.coroutines/-coroutine-context/-element/get.html(key: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.coroutines/-coroutine-context/-key/index.html<E>)` Cmn `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.coroutines/-coroutine-context/index.html` `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.coroutines/-coroutine-context/-element/minus-key.html(key: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.coroutines/-coroutine-context/-key/index.html<*>)` Cmn

## Public functions

### onInfiniteOperation

Cmn

```
suspend fun <R : Any?> onInfiniteOperation(block: suspend () -> R): R
```

Call this to apply the policy on the given suspending `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/InfiniteAnimationPolicy#onInfiniteOperation(kotlin.coroutines.SuspendFunction0)`. 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 `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/InfiniteAnimationPolicy#onInfiniteOperation(kotlin.coroutines.SuspendFunction0)` will call it again. If the block is not part of an infinite animation, the policy will still be applied.

## Public properties

### key

Cmn Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.1.0)

```
open val key: CoroutineContext.Key<*>
```