# DefaultPreloadManager.Builder

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/source/preload/DefaultPreloadManager.java+class:androidx.media3.exoplayer.source.preload.DefaultPreloadManager.Builder)

*** ** * ** ***


```
public final class DefaultPreloadManager.Builder extends BasePreloadManager.BuilderBase<Integer, DefaultPreloadManager.PreloadStatus>
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||
| ↳ | [androidx.media3.exoplayer.source.preload.BasePreloadManager.BuilderBase](https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/BasePreloadManager.BuilderBase)\<[Integer](https://developer.android.com/reference/java/lang/Integer.html), [DefaultPreloadManager.PreloadStatus](https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.PreloadStatus)\> ||
|   | ↳ | [androidx.media3.exoplayer.source.preload.DefaultPreloadManager.Builder](https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder) |

*** ** * ** ***

A builder for `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` instances.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#Builder(android.content.Context,androidx.media3.exoplayer.source.preload.TargetPreloadStatusControl<java.lang.Integer,androidx.media3.exoplayer.source.preload.DefaultPreloadManager.PreloadStatus>)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/TargetPreloadStatusControl<https://developer.android.com/reference/java/lang/Integer.html, https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.PreloadStatus> targetPreloadStatusControl )` Creates a builder. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#Builder(android.content.Context,androidx.media3.exoplayer.source.preload.DefaultPreloadManager.SimpleRankingDataComparator,androidx.media3.exoplayer.source.preload.TargetPreloadStatusControl<java.lang.Integer,androidx.media3.exoplayer.source.preload.DefaultPreloadManager.PreloadStatus>)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.SimpleRankingDataComparator rankingDataComparator, https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/TargetPreloadStatusControl<https://developer.android.com/reference/java/lang/Integer.html, https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.PreloadStatus> targetPreloadStatusControl )` Creates a builder. |

| ### Public methods |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` | `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#build()()` Builds a `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` instance. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer` | `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer()()` Builds an `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer` | `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer(androidx.media3.exoplayer.ExoPlayer.Builder)(https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer.Builder exoPlayerBuilder)` Builds an `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer` with an `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer.Builder` passed in. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setBandwidthMeter(androidx.media3.exoplayer.upstream.BandwidthMeter)(https://developer.android.com/reference/androidx/media3/exoplayer/upstream/BandwidthMeter bandwidthMeter)` Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/BandwidthMeter` that will be used by the built `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` and `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setCache(androidx.media3.datasource.cache.Cache)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/datasource/cache/Cache cache)` Sets the `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache` that will be used by the built `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` and `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setCachingExecutor(java.util.concurrent.Executor)(https://developer.android.com/reference/java/util/concurrent/Executor.html executor)` Sets an `https://developer.android.com/reference/java/util/concurrent/Executor.html` used to cache data. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | `@https://developer.android.com/reference/androidx/annotation/VisibleForTesting @https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setClock(androidx.media3.common.util.Clock)(https://developer.android.com/reference/androidx/media3/common/util/Clock clock)` Sets the `https://developer.android.com/reference/androidx/media3/common/util/Clock` that will be used the `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setDataSourceFactory(androidx.media3.datasource.DataSource.Factory)(https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory dataSourceFactory)` Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` that will be used by the built `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` and `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setLoadControl(androidx.media3.exoplayer.LoadControl)(https://developer.android.com/reference/androidx/media3/exoplayer/LoadControl loadControl)` Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/LoadControl` that will be used by the built `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` and `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html [setMediaSourceFactory](https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setMediaSourceFactory(androidx.media3.exoplayer.source.MediaSource.Factory))(https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.Factory mediaSourceFactory)` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setMediaSourceFactorySupplier(androidx.media3.exoplayer.source.preload.MediaSourceFactorySupplier)` instead. <br /> |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setMediaSourceFactorySupplier(androidx.media3.exoplayer.source.preload.MediaSourceFactorySupplier)( https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/MediaSourceFactorySupplier mediaSourceFactorySupplier )` Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/MediaSourceFactorySupplier` which supplies the `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.Factory` that will be used by the built `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` and `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setPreloadLooper(android.os.Looper)(https://developer.android.com/reference/android/os/Looper.html preloadLooper)` Sets the `https://developer.android.com/reference/android/os/Looper.html` that will be used for preload and playback. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setRenderersFactory(androidx.media3.exoplayer.RenderersFactory)(https://developer.android.com/reference/androidx/media3/exoplayer/RenderersFactory renderersFactory)` Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/RenderersFactory` that will be used by the built `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` and `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setTrackSelectorFactory(androidx.media3.exoplayer.trackselection.TrackSelector.Factory)(https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/TrackSelector.Factory trackSelectorFactory)` Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/TrackSelector.Factory` that will be used by the built `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` and `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`. |

### Inherited fields

From [androidx.media3.exoplayer.source.preload.BasePreloadManager.BuilderBase](https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/BasePreloadManager.BuilderBase) `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/MediaSourceFactorySupplier` `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/BasePreloadManager.BuilderBase#mediaSourceFactorySupplier()` `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/RankingDataComparator<T>` `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/BasePreloadManager.BuilderBase#rankingDataComparator()` `final https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/TargetPreloadStatusControl<T, PreloadStatusT>` `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/BasePreloadManager.BuilderBase#targetPreloadStatusControl()`

## Public constructors

### Builder

```
public Builder(
    Context context,
    TargetPreloadStatusControl<Integer, DefaultPreloadManager.PreloadStatus> targetPreloadStatusControl
)
```

Creates a builder.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/TargetPreloadStatusControl<https://developer.android.com/reference/java/lang/Integer.html, https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.PreloadStatus> targetPreloadStatusControl` | A `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/TargetPreloadStatusControl`. |

### Builder

```
public Builder(
    Context context,
    DefaultPreloadManager.SimpleRankingDataComparator rankingDataComparator,
    TargetPreloadStatusControl<Integer, DefaultPreloadManager.PreloadStatus> targetPreloadStatusControl
)
```

Creates a builder.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.SimpleRankingDataComparator rankingDataComparator` | A `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.SimpleRankingDataComparator`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/TargetPreloadStatusControl<https://developer.android.com/reference/java/lang/Integer.html, https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.PreloadStatus> targetPreloadStatusControl` | A `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/TargetPreloadStatusControl`. |

## Public methods

### build

```
public DefaultPreloadManager build()
```

Builds a `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` instance.

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | If this method has already been called. |

### buildExoPlayer

```
public ExoPlayer buildExoPlayer()
```

Builds an `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`.

See `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer(androidx.media3.exoplayer.ExoPlayer.Builder)` for the list of values populated on and resulting from this builder that the built `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer` uses.

For the other configurations than above, the built `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer` uses the default values, see `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer.Builder#Builder(android.content.Context)` for the list of default values.

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer` | An `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer` instance. |

### buildExoPlayer

```
public ExoPlayer buildExoPlayer(ExoPlayer.Builder exoPlayerBuilder)
```

Builds an `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer` with an `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer.Builder` passed in.

The built `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer` uses the following values populated on and resulting from this builder:

- `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setMediaSourceFactorySupplier(androidx.media3.exoplayer.source.preload.MediaSourceFactorySupplier)` MediaSource.Factory}
- `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setRenderersFactory(androidx.media3.exoplayer.RenderersFactory)`
- `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setTrackSelectorFactory(androidx.media3.exoplayer.trackselection.TrackSelector.Factory)`
- `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setLoadControl(androidx.media3.exoplayer.LoadControl)`
- `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setBandwidthMeter(androidx.media3.exoplayer.upstream.BandwidthMeter)`
- `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setPreloadLooper(android.os.Looper)` preload looper}

For the other configurations than above, the built `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer` uses the values from the passed `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer.Builder`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer.Builder exoPlayerBuilder` | An `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer.Builder` that is used to build the `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer` | An `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer` instance. |

### setBandwidthMeter

```
@CanIgnoreReturnValue
public DefaultPreloadManager.Builder setBandwidthMeter(BandwidthMeter bandwidthMeter)
```

Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/BandwidthMeter` that will be used by the built `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` and `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`.

The default is a `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/DefaultBandwidthMeter`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/BandwidthMeter bandwidthMeter` | A `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/BandwidthMeter`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | This builder. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | If `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#build()`, `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer()` or `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer(androidx.media3.exoplayer.ExoPlayer.Builder)` has already been called. |
| `https://developer.android.com/reference/java/lang/IllegalArgumentException.html` | If `bandwidthMeter` is `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/BandwidthMeter#NO_OP()`. |

### setCache

```
@CanIgnoreReturnValue
public DefaultPreloadManager.Builder setCache(@Nullable Cache cache)
```

Sets the `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache` that will be used by the built `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` and `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`.

The `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache` will be used for caching the media items, and propagated to the `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.Factory` used by `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` and `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer` for media source creation. Once set, the `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache` will be passed into the existing `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/MediaSourceFactorySupplier#setCache(androidx.media3.datasource.cache.Cache)` on this builder, and the `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/MediaSourceFactorySupplier` later set to this builder.

The default is `null`. If an app will return `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.PreloadStatus#specifiedRangeCached(long,long)` or `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.PreloadStatus#specifiedRangeCached(long)` in its implementation of `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/TargetPreloadStatusControl`, a non-null instance must be passed.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/datasource/cache/Cache cache` | A `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | This builder. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | If `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#build()`, `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer()` or `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer(androidx.media3.exoplayer.ExoPlayer.Builder)` has already been called. |

### setCachingExecutor

```
@CanIgnoreReturnValue
public DefaultPreloadManager.Builder setCachingExecutor(Executor executor)
```

Sets an `https://developer.android.com/reference/java/util/concurrent/Executor.html` used to cache data.

The default is `Runnable::run`, which will cause each caching task to download data on a separate download thread. Passing an `https://developer.android.com/reference/java/util/concurrent/Executor.html` that uses multiple threads will speed up caching tasks that can be split into smaller parts for parallel execution.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/util/concurrent/Executor.html executor` | An `https://developer.android.com/reference/java/util/concurrent/Executor.html`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | This builder. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | If `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#build()`, `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer()` or `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer(androidx.media3.exoplayer.ExoPlayer.Builder)` has already been called. |

### setClock

```
@VisibleForTesting
@CanIgnoreReturnValue
public DefaultPreloadManager.Builder setClock(Clock clock)
```

Sets the `https://developer.android.com/reference/androidx/media3/common/util/Clock` that will be used the `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager`. Should only be set for testing purposes.

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | This builder. |

### setDataSourceFactory

```
@CanIgnoreReturnValue
public DefaultPreloadManager.Builder setDataSourceFactory(DataSource.Factory dataSourceFactory)
```

Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` that will be used by the built `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` and `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`.

The `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` will be used as the upstream `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for caching the media items, and propagated to the `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.Factory` used by `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` and `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer` for media source creation. Once set, the `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` will be passed into the existing `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/MediaSourceFactorySupplier#setDataSourceFactory(androidx.media3.datasource.DataSource.Factory)` on this builder, and the `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/MediaSourceFactorySupplier` later set to this builder.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory dataSourceFactory` | A `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | This builder. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | If `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#build()`, `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer()` or `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer(androidx.media3.exoplayer.ExoPlayer.Builder)` has already been called. |

### setLoadControl

```
@CanIgnoreReturnValue
public DefaultPreloadManager.Builder setLoadControl(LoadControl loadControl)
```

Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/LoadControl` that will be used by the built `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` and `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`.

The default is a `https://developer.android.com/reference/androidx/media3/exoplayer/DefaultLoadControl`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/LoadControl loadControl` | A `https://developer.android.com/reference/androidx/media3/exoplayer/LoadControl`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | This builder. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | If `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#build()`, `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer()` or `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer(androidx.media3.exoplayer.ExoPlayer.Builder)` has already been called. |

### setMediaSourceFactory

```
@CanIgnoreReturnValue
public DefaultPreloadManager.Builder [setMediaSourceFactory](https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setMediaSourceFactory(androidx.media3.exoplayer.source.MediaSource.Factory))(MediaSource.Factory mediaSourceFactory)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setMediaSourceFactorySupplier(androidx.media3.exoplayer.source.preload.MediaSourceFactorySupplier)` instead. If an app still uses this method, it should be aware that the set `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.Factory` may not have the `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setCache(androidx.media3.datasource.cache.Cache)` and `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setDataSourceFactory(androidx.media3.datasource.DataSource.Factory)` injected.

### setMediaSourceFactorySupplier

```
@CanIgnoreReturnValue
public DefaultPreloadManager.Builder setMediaSourceFactorySupplier(
    MediaSourceFactorySupplier mediaSourceFactorySupplier
)
```

Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/MediaSourceFactorySupplier` which supplies the `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.Factory` that will be used by the built `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` and `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`.

The default is a `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/MediaSourceFactorySupplier` that creates a `https://developer.android.com/reference/androidx/media3/exoplayer/source/DefaultMediaSourceFactory` with the `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setCache(androidx.media3.datasource.cache.Cache)` and the `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#setDataSourceFactory(androidx.media3.datasource.DataSource.Factory)`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/MediaSourceFactorySupplier mediaSourceFactorySupplier` | A `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/MediaSourceFactorySupplier`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | This builder. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | If `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#build()`, `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer()` or `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer(androidx.media3.exoplayer.ExoPlayer.Builder)` has already been called. |

### setPreloadLooper

```
@CanIgnoreReturnValue
public DefaultPreloadManager.Builder setPreloadLooper(Looper preloadLooper)
```

Sets the `https://developer.android.com/reference/android/os/Looper.html` that will be used for preload and playback.

The backing thread should run with priority `https://developer.android.com/reference/android/os/Process.html#THREAD_PRIORITY_AUDIO` and should handle messages within 10ms.

The default is a looper that is associated with a new thread created internally.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/os/Looper.html preloadLooper` | A `https://developer.android.com/reference/android/os/Looper.html`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | This builder. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | If `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#build()`, `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer()` or `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer(androidx.media3.exoplayer.ExoPlayer.Builder)` has already been called, or when the `https://developer.android.com/reference/android/os/Looper.html#getMainLooper()` is passed in. |

### setRenderersFactory

```
@CanIgnoreReturnValue
public DefaultPreloadManager.Builder setRenderersFactory(RenderersFactory renderersFactory)
```

Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/RenderersFactory` that will be used by the built `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` and `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`.

The default is a `https://developer.android.com/reference/androidx/media3/exoplayer/DefaultRenderersFactory`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/RenderersFactory renderersFactory` | A `https://developer.android.com/reference/androidx/media3/exoplayer/RenderersFactory`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | This builder. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | If `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#build()`, `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer()` or `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer(androidx.media3.exoplayer.ExoPlayer.Builder)` has already been called. |

### setTrackSelectorFactory

```
@CanIgnoreReturnValue
public DefaultPreloadManager.Builder setTrackSelectorFactory(TrackSelector.Factory trackSelectorFactory)
```

Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/TrackSelector.Factory` that will be used by the built `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager` and `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`.

The default is a `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/TrackSelector.Factory` that always creates a new `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/DefaultTrackSelector`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/TrackSelector.Factory trackSelectorFactory` | A `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/TrackSelector.Factory`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder` | This builder. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | If `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#build()`, `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer()` or `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.Builder#buildExoPlayer(androidx.media3.exoplayer.ExoPlayer.Builder)` has already been called. |