# PreCacheHelper.Factory

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

*** ** * ** ***


```
public final class PreCacheHelper.Factory
```

<br />

*** ** * ** ***

A factory for `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper`.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory#Factory(android.content.Context,androidx.media3.datasource.cache.Cache,android.os.Looper)(https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/androidx/media3/datasource/cache/Cache cache, https://developer.android.com/reference/android/os/Looper.html preCacheLooper)` Creates a `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory#Factory(androidx.media3.datasource.cache.Cache,androidx.media3.datasource.DataSource.Factory,androidx.media3.exoplayer.RenderersFactory,android.os.Looper)( https://developer.android.com/reference/androidx/media3/datasource/cache/Cache cache, https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory upstreamDataSourceFactory, https://developer.android.com/reference/androidx/media3/exoplayer/RenderersFactory renderersFactory, https://developer.android.com/reference/android/os/Looper.html preCacheLooper )` Creates a `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory#Factory(android.content.Context,androidx.media3.datasource.cache.Cache,androidx.media3.exoplayer.RenderersFactory,android.os.Looper)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/androidx/media3/datasource/cache/Cache cache, https://developer.android.com/reference/androidx/media3/exoplayer/RenderersFactory renderersFactory, https://developer.android.com/reference/android/os/Looper.html preCacheLooper )` Creates a `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory#Factory(android.content.Context,androidx.media3.datasource.cache.Cache,androidx.media3.datasource.DataSource.Factory,android.os.Looper)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/androidx/media3/datasource/cache/Cache cache, https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory upstreamDataSourceFactory, https://developer.android.com/reference/android/os/Looper.html preCacheLooper )` Creates a `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory`. |

| ### Public methods |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper` | `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory#create(androidx.media3.common.MediaItem)(https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem)` Creates a `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper` instance. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory#setDownloadExecutor(java.util.concurrent.Executor)(https://developer.android.com/reference/java/util/concurrent/Executor.html downloadExecutor)` Sets an `https://developer.android.com/reference/java/util/concurrent/Executor.html` used to download data. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory#setListener(androidx.media3.exoplayer.source.preload.PreCacheHelper.Listener)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Listener listener)` Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Listener`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory#setTrackSelectionParameters(androidx.media3.common.TrackSelectionParameters)( https://developer.android.com/reference/androidx/media3/common/TrackSelectionParameters trackSelectionParameters )` Sets a `https://developer.android.com/reference/androidx/media3/common/TrackSelectionParameters` for selecting tracks for pre-caching. |

## Public constructors

### Factory

```
public Factory(Context context, Cache cache, Looper preCacheLooper)
```

Creates a `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | The `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache cache` | The `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache` instance that will be used. |
| `https://developer.android.com/reference/android/os/Looper.html preCacheLooper` | The `https://developer.android.com/reference/android/os/Looper.html` that operates the pre-caching flow. Note that this looper is not responsible for downloading the data. |

### Factory

```
public Factory(
    Cache cache,
    DataSource.Factory upstreamDataSourceFactory,
    RenderersFactory renderersFactory,
    Looper preCacheLooper
)
```

Creates a `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache cache` | The `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache` instance that will be used. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory upstreamDataSourceFactory` | The upstream `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for reading data not in the cache. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/RenderersFactory renderersFactory` | The `https://developer.android.com/reference/androidx/media3/exoplayer/RenderersFactory` creating the renderers for which tracks are selected. |
| `https://developer.android.com/reference/android/os/Looper.html preCacheLooper` | The `https://developer.android.com/reference/android/os/Looper.html` that operates the pre-caching flow. Note that this looper is not responsible for downloading the data. |

### Factory

```
public Factory(
    Context context,
    Cache cache,
    RenderersFactory renderersFactory,
    Looper preCacheLooper
)
```

Creates a `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | The `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache cache` | The `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache` instance that will be used. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/RenderersFactory renderersFactory` | The `https://developer.android.com/reference/androidx/media3/exoplayer/RenderersFactory` creating the renderers for which tracks are selected. |
| `https://developer.android.com/reference/android/os/Looper.html preCacheLooper` | The `https://developer.android.com/reference/android/os/Looper.html` that operates the pre-caching flow. Note that this looper is not responsible for downloading the data. |

### Factory

```
public Factory(
    Context context,
    Cache cache,
    DataSource.Factory upstreamDataSourceFactory,
    Looper preCacheLooper
)
```

Creates a `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | The `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache cache` | The `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache` instance that will be used. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory upstreamDataSourceFactory` | The upstream `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for reading data not in the cache. |
| `https://developer.android.com/reference/android/os/Looper.html preCacheLooper` | The `https://developer.android.com/reference/android/os/Looper.html` that operates the pre-caching flow. Note that this looper is not responsible for downloading the data. |

## Public methods

### create

```
public PreCacheHelper create(MediaItem mediaItem)
```

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

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem` | The `https://developer.android.com/reference/androidx/media3/common/MediaItem` to pre-cache. |

### setDownloadExecutor

```
@CanIgnoreReturnValue
public PreCacheHelper.Factory setDownloadExecutor(Executor downloadExecutor)
```

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

The default is `Runnable::run`.

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

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory` | This factory, for convenience. |

### setListener

```
@CanIgnoreReturnValue
public PreCacheHelper.Factory setListener(@Nullable PreCacheHelper.Listener listener)
```

Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Listener`.

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory` | This factory, for convenience. |

### setTrackSelectionParameters

```
@CanIgnoreReturnValue
public PreCacheHelper.Factory setTrackSelectionParameters(
    TrackSelectionParameters trackSelectionParameters
)
```

Sets a `https://developer.android.com/reference/androidx/media3/common/TrackSelectionParameters` for selecting tracks for pre-caching.

The default is `https://developer.android.com/reference/androidx/media3/common/TrackSelectionParameters#DEFAULT()`.

This is only used for adaptive streams.

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/preload/PreCacheHelper.Factory` | This factory, for convenience. |