# PriorityTaskManager

# PriorityTaskManager

Artifact:[androidx.media3:media3-common](https://developer.android.com/jetpack/androidx/releases/media3)  
[View Source](https://cs.android.com/search?q=file:androidx/media3/common/PriorityTaskManager.java+class:androidx.media3.common.PriorityTaskManager)

*** ** * ** ***

Kotlin\|[Java](https://developer.android.com/reference/androidx/media3/common/PriorityTaskManager "View this page in Java")

<br />

```
@UnstableApi
class PriorityTaskManager
```

<br />

*** ** * ** ***

Allows tasks with associated[priorities](https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority)to control how they proceed relative to one another.

A task should call[add](https://developer.android.com/reference/kotlin/androidx/media3/common/PriorityTaskManager#add(int))to register with the manager and[remove](https://developer.android.com/reference/kotlin/androidx/media3/common/PriorityTaskManager#remove(int))to unregister. A registered task will prevent tasks of lower priority from proceeding, and should call[proceed](https://developer.android.com/reference/kotlin/androidx/media3/common/PriorityTaskManager#proceed(int)),[proceedNonBlocking](https://developer.android.com/reference/kotlin/androidx/media3/common/PriorityTaskManager#proceedNonBlocking(int))or[proceedOrThrow](https://developer.android.com/reference/kotlin/androidx/media3/common/PriorityTaskManager#proceedOrThrow(int))each time it wishes to check whether it is itself allowed to proceed.

It is recommended to use predefined[priorities](https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority)or priority values defined relative to those defaults.

## Summary

|                                                                                                                                                                   ### Nested types                                                                                                                                                                    |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `class `[PriorityTaskManager.PriorityTooLowException](https://developer.android.com/reference/kotlin/androidx/media3/common/PriorityTaskManager.PriorityTooLowException)` : `[IOException](https://developer.android.com/reference/java/io/IOException.html) Thrown when task attempts to proceed when another registered task has a higher priority. |

|                                                          ### Public constructors                                                           |
|--------------------------------------------------------------------------------------------------------------------------------------------|
| [PriorityTaskManager](https://developer.android.com/reference/kotlin/androidx/media3/common/PriorityTaskManager#PriorityTaskManager())`()` |

|                                ### Public functions                                 |
|-------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)       | [add](https://developer.android.com/reference/kotlin/androidx/media3/common/PriorityTaskManager#add(int))`(@`[C.Priority](https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority)` priority: `[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)`)` Register a new task.                                                                                                                                                      |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)       | [proceed](https://developer.android.com/reference/kotlin/androidx/media3/common/PriorityTaskManager#proceed(int))`(@`[C.Priority](https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority)` priority: `[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)`)` Blocks until the task is allowed to proceed.                                                                                                                      |
| [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html) | [proceedNonBlocking](https://developer.android.com/reference/kotlin/androidx/media3/common/PriorityTaskManager#proceedNonBlocking(int))`(@`[C.Priority](https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority)` priority: `[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)`)` A non-blocking variant of[proceed](https://developer.android.com/reference/kotlin/androidx/media3/common/PriorityTaskManager#proceed(int)). |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)       | [proceedOrThrow](https://developer.android.com/reference/kotlin/androidx/media3/common/PriorityTaskManager#proceedOrThrow(int))`(@`[C.Priority](https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority)` priority: `[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)`)` A throwing variant of[proceed](https://developer.android.com/reference/kotlin/androidx/media3/common/PriorityTaskManager#proceed(int)).             |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)       | [remove](https://developer.android.com/reference/kotlin/androidx/media3/common/PriorityTaskManager#remove(int))`(@`[C.Priority](https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority)` priority: `[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)`)` Unregister a task.                                                                                                                                                  |

## Public constructors

### PriorityTaskManager

```
PriorityTaskManager()
```  

## Public functions

### add

```
fun add(@C.Priority priority: Int): Unit
```

Register a new task. The task must call[remove](https://developer.android.com/reference/kotlin/androidx/media3/common/PriorityTaskManager#remove(int))when done.

It is recommended to use predefined[priorities](https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority)or priority values defined relative to those defaults.  

|                                                                                        Parameters                                                                                         |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|
| `@`[C.Priority](https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority)` priority: `[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html) | The[C.Priority](https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority)of the task. Larger values indicate higher priorities. |

### proceed

```
fun proceed(@C.Priority priority: Int): Unit
```

Blocks until the task is allowed to proceed.  

|                                                                                        Parameters                                                                                         |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|
| `@`[C.Priority](https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority)` priority: `[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html) | The[C.Priority](https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority)of the task. |

|                                                    Throws                                                     |
|---------------------------------------------------------------------------------------------------------------|-------------------------------|
| [java.lang.InterruptedException](https://developer.android.com/reference/java/lang/InterruptedException.html) | If the thread is interrupted. |

### proceedNonBlocking

```
fun proceedNonBlocking(@C.Priority priority: Int): Boolean
```

A non-blocking variant of[proceed](https://developer.android.com/reference/kotlin/androidx/media3/common/PriorityTaskManager#proceed(int)).  

|                                                                                        Parameters                                                                                         |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|
| `@`[C.Priority](https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority)` priority: `[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html) | The[C.Priority](https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority)of the task. |

|                                       Returns                                       |
|-------------------------------------------------------------------------------------|-----------------------------------------|
| [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html) | Whether the task is allowed to proceed. |

### proceedOrThrow

```
fun proceedOrThrow(@C.Priority priority: Int): Unit
```

A throwing variant of[proceed](https://developer.android.com/reference/kotlin/androidx/media3/common/PriorityTaskManager#proceed(int)).  

|                                                                                        Parameters                                                                                         |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|
| `@`[C.Priority](https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority)` priority: `[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html) | The[C.Priority](https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority)of the task. |

|                                                                                         Throws                                                                                          |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------|
| [androidx.media3.common.PriorityTaskManager.PriorityTooLowException](https://developer.android.com/reference/kotlin/androidx/media3/common/PriorityTaskManager.PriorityTooLowException) | If the task is not allowed to proceed. |

### remove

```
fun remove(@C.Priority priority: Int): Unit
```

Unregister a task.  

|                                                                                        Parameters                                                                                         |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|
| `@`[C.Priority](https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority)` priority: `[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html) | The[C.Priority](https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority)of the task. |