# Cache.Listener

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

*** ** * ** ***


```
public interface Cache.Listener
```

<br />

Known direct subclasses [CacheEvictor](https://developer.android.com/reference/androidx/media3/datasource/cache/CacheEvictor), [CachedRegionTracker](https://developer.android.com/reference/androidx/media3/exoplayer/upstream/CachedRegionTracker)

|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheEvictor` | Evicts data from a `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/CachedRegionTracker` | Utility class for efficiently tracking regions of data that are stored in a `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache` for a given cache key. |

Known indirect subclasses [LeastRecentlyUsedCacheEvictor](https://developer.android.com/reference/androidx/media3/datasource/cache/LeastRecentlyUsedCacheEvictor), [NoOpCacheEvictor](https://developer.android.com/reference/androidx/media3/datasource/cache/NoOpCacheEvictor)

|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/cache/LeastRecentlyUsedCacheEvictor` | Evicts least recently used cache files first. |
| `https://developer.android.com/reference/androidx/media3/datasource/cache/NoOpCacheEvictor` | Evictor that doesn't ever evict cache files. |

*** ** * ** ***

Listener of `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache` events.

## Summary

| ### Public methods |
|---|---|
| `abstract void` | `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache.Listener#onSpanAdded(androidx.media3.datasource.cache.Cache,androidx.media3.datasource.cache.CacheSpan)(https://developer.android.com/reference/androidx/media3/datasource/cache/Cache cache, https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan span)` Called when a `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan` is added to the cache. |
| `abstract void` | `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache.Listener#onSpanRemoved(androidx.media3.datasource.cache.Cache,androidx.media3.datasource.cache.CacheSpan)(https://developer.android.com/reference/androidx/media3/datasource/cache/Cache cache, https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan span)` Called when a `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan` is removed from the cache. |
| `abstract void` | `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache.Listener#onSpanTouched(androidx.media3.datasource.cache.Cache,androidx.media3.datasource.cache.CacheSpan,androidx.media3.datasource.cache.CacheSpan)(https://developer.android.com/reference/androidx/media3/datasource/cache/Cache cache, https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan oldSpan, https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan newSpan)` Called when an existing `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan` is touched, causing it to be replaced. |

## Public methods

### onSpanAdded

```
abstract void onSpanAdded(Cache cache, CacheSpan span)
```

Called when a `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan` is added to the cache.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache cache` | The source of the event. |
| `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan span` | The added `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan`. |

### onSpanRemoved

```
abstract void onSpanRemoved(Cache cache, CacheSpan span)
```

Called when a `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan` is removed from the cache.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache cache` | The source of the event. |
| `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan span` | The removed `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan`. |

### onSpanTouched

```
abstract void onSpanTouched(Cache cache, CacheSpan oldSpan, CacheSpan newSpan)
```

Called when an existing `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan` is touched, causing it to be replaced. The new `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan` is guaranteed to represent the same data as the one it replaces, however `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan#file()` and `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan#lastTouchTimestamp()` may have changed.

Note that for span replacement, `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache.Listener#onSpanAdded(androidx.media3.datasource.cache.Cache,androidx.media3.datasource.cache.CacheSpan)` and `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache.Listener#onSpanRemoved(androidx.media3.datasource.cache.Cache,androidx.media3.datasource.cache.CacheSpan)` are not called in addition to this method.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache cache` | The source of the event. |
| `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan oldSpan` | The old `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan`, which has been removed from the cache. |
| `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan newSpan` | The new `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheSpan`, which has been added to the cache. |