# Loader.Loadable

# Loader.Loadable

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

*** ** * ** ***

Kotlin\|[Java](https://developer.android.com/reference/androidx/media3/exoplayer/upstream/Loader.Loadable "View this page in Java")

<br />

```
interface Loader.Loadable
```

<br />

Known direct subclasses  
[Chunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk),[ParsingLoadable](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/ParsingLoadable)  

|----------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Chunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk)                 | An abstract base class for[Loadable](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/Loader.Loadable)implementations that load chunks of data required for the playback of streams.                                                                    |
| [ParsingLoadable](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/ParsingLoadable) | A[Loadable](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/Loader.Loadable)for objects that can be parsed from binary data using a[Parser](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/ParsingLoadable.Parser). |

Known indirect subclasses  
[BaseMediaChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/BaseMediaChunk),[ContainerMediaChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk),[DataChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/DataChunk),[FakeMediaChunk](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMediaChunk),[InitializationChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/InitializationChunk),[MediaChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/MediaChunk),[SingleSampleMediaChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/SingleSampleMediaChunk)  

|----------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [BaseMediaChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/BaseMediaChunk)                 | A base implementation of[MediaChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/MediaChunk)that outputs to a[BaseMediaChunkOutput](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/BaseMediaChunkOutput). |
| [ContainerMediaChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk)       | A[BaseMediaChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/BaseMediaChunk)that uses an[Extractor](https://developer.android.com/reference/kotlin/androidx/media3/extractor/Extractor)to decode sample data.                                   |
| [DataChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/DataChunk)                           | A base class for[Chunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk)implementations where the data should be loaded into a` byte[]`before being consumed.                                                                                  |
| [FakeMediaChunk](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMediaChunk)                             | Fake[MediaChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/MediaChunk).                                                                                                                                                                        |
| [InitializationChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/InitializationChunk)       | A[Chunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk)that uses an[Extractor](https://developer.android.com/reference/kotlin/androidx/media3/extractor/Extractor)to decode initialization data for single track.                            |
| [MediaChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/MediaChunk)                         | An abstract base class for[Chunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk)s that contain media samples.                                                                                                                                |
| [SingleSampleMediaChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/SingleSampleMediaChunk) | **This class is deprecated.** The only use for this class is subtitle playback, but it is only compatible with legacy subtitle decoding, which is not supported by default. <br />                                                                                                         |

*** ** * ** ***

An object that can be loaded using a[Loader](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/Loader).

## Summary

|                             ### Public functions                              |
|-------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html) | [cancelLoad](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/Loader.Loadable#cancelLoad())`()` Cancels the load.                               |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html) | [load](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/Loader.Loadable#load())`()` Performs the load, returning on completion or cancellation. |

## Public functions

### cancelLoad

```
fun cancelLoad(): Unit
```

Cancels the load.

Loadable implementations should ensure that a currently executing[load](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/Loader.Loadable#load())call will exit reasonably quickly after this method is called. The[load](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/Loader.Loadable#load())call may exit either by returning or by throwing an[IOException](https://developer.android.com/reference/java/io/IOException.html).

If there is a currently executing[load](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/Loader.Loadable#load())call, then the thread on which that call is being made will be interrupted immediately after the call to this method. Hence implementations do not need to (and should not attempt to) interrupt the loading thread themselves.

Although the loading thread will be interrupted, Loadable implementations should not use the interrupted status of the loading thread in[load](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/Loader.Loadable#load())to determine whether the load has been canceled. This approach is not robust \[Internal ref: b/79223737\]. Instead, implementations should use their own flag to signal cancelation (for example, using[AtomicBoolean](https://developer.android.com/reference/java/util/concurrent/atomic/AtomicBoolean.html)).  

### load

```
fun load(): Unit
```

Performs the load, returning on completion or cancellation.  

|                                         Throws                                          |
|-----------------------------------------------------------------------------------------|-----------------------------------|
| [java.io.IOException](https://developer.android.com/reference/java/io/IOException.html) | If the input could not be loaded. |