---
title: "PausedComposition"
description: "[PausedComposition] is the result of calling [PausableComposition.setContent] or
[PausableComposition.setContentWithReuse]. It is used to drive the paused composition to
completion. A [PausedComposition] should not be used until [isComplete] is `true` and [apply] has
been called.

A [PausedComposition] is created paused and will only compose the `content` parameter when
[resume] is called the first time."
type: "interface"
---

<div class='type'>Interface</div>


<a id='references'></a>

<div class='sourceset sourceset-common'>Common</div>



```kotlin
public sealed interface PausedComposition
```


`PausedComposition` is the result of calling `PausableComposition.setContent` or
`PausableComposition.setContentWithReuse`. It is used to drive the paused composition to
completion. A `PausedComposition` should not be used until `isComplete` is `true` and `apply` has
been called.

A `PausedComposition` is created paused and will only compose the `content` parameter when
`resume` is called the first time.


## Functions

```kotlin
public fun resume(shouldPause: ShouldPauseCallback): Boolean
```


Resume the composition that has been paused. This method should be called until `resume`
returns `true` or `isComplete` is `true` which has the same result as the last result of
calling `resume`. The `shouldPause` parameter is a lambda that returns whether the
composition should be paused. For example, in lazy lists this returns `false` until just
prior to the next frame starting in which it returns `true`

Calling `resume` after it returns `true` or when `isComplete` is `true` will throw an
exception.

#### Parameters

| | |
| --- | --- |
| shouldPause | A lambda that is used to determine if the composition should be paused. This lambda is called often so should be a very simple calculation. Returning `true` does not guarantee the composition will pause, it should only be considered a request to pause the composition. Not all composable functions are pausable and only pausable composition functions will pause. |


#### Returns

| | |
| --- | --- |
|  | `true` if the composition is complete and `false` if one or more calls to `resume` are required to complete composition. |



```kotlin
public fun apply()
```


Apply the composition. This is the last step of a paused composition and is required to be
called prior to the composition is usable.

Calling `apply` should always be proceeded with a check of `isComplete` before it is called
and potentially calling `resume` in a loop until `isComplete` returns `true`. This can happen
if `resume` returned `true` but `apply` was not synchronously called immediately afterwords.
Any state that was read that changed between when `resume` being called and `apply` being
called may require the paused composition to be resumed before applied.


```kotlin
public fun cancel()
```


Cancels the paused composition. This should only be used if the composition is going to be
disposed and the entire composition is not going to be used.



