# TilesTimelineCache

Artifact: [androidx.wear.tiles:tiles-renderer](https://developer.android.com/jetpack/androidx/releases/wear-tiles) [View Source](https://cs.android.com/search?q=file:androidx/wear/tiles/timeline/TilesTimelineCache.java+class:androidx.wear.tiles.timeline.TilesTimelineCache) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-tiles#1.0.0)

*** ** * ** ***


```
public final class TilesTimelineCache
```

<br />

*** ** * ** ***

Timeline cache for Wear Tiles. This will take in a full timeline, and return the appropriate entry for the given time from `findTimelineEntryForTime`.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#TilesTimelineCache(androidx.wear.protolayout.TimelineBuilders.Timeline)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/TimelineBuilders.Timeline timeline)` Default constructor. |
| `[TilesTimelineCache](https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#TilesTimelineCache(androidx.wear.tiles.TimelineBuilders.Timeline))(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/tiles/TimelineBuilders.Timeline timeline)` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#TilesTimelineCache(androidx.wear.protolayout.TimelineBuilders.Timeline)` instead. <br /> |

| ### Public methods |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/wear/protolayout/TimelineBuilders.TimelineEntry` | `@https://developer.android.com/reference/androidx/annotation/MainThread https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#findClosestTileTimelineEntry(long)(long timeMillis)` A (very) inexact version of `https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#findTimelineEntryForTime(long)` which finds the closest timeline entry to the current time, regardless of validity. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/wear/tiles/TimelineBuilders.TimelineEntry` | `@https://developer.android.com/reference/androidx/annotation/MainThread [findClosestTimelineEntry](https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#findClosestTimelineEntry(long))(long timeMillis)` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#findClosestTileTimelineEntry(long)` instead. <br /> |
| `long` | `@https://developer.android.com/reference/androidx/annotation/MainThread https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#findCurrentTimelineEntryExpiry(androidx.wear.protolayout.TimelineBuilders.TimelineEntry,long)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/TimelineBuilders.TimelineEntry entry, long fromTimeMillis )` Finds when the timeline entry `entry` should be considered "expired". |
| `long` | `@https://developer.android.com/reference/androidx/annotation/MainThread [findCurrentTimelineEntryExpiry](https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#findCurrentTimelineEntryExpiry(androidx.wear.tiles.TimelineBuilders.TimelineEntry,long))( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/tiles/TimelineBuilders.TimelineEntry entry, long fromTimeMillis )` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#findCurrentTimelineEntryExpiry(androidx.wear.protolayout.TimelineBuilders.TimelineEntry,long)` instead. <br /> |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/wear/protolayout/TimelineBuilders.TimelineEntry` | `@https://developer.android.com/reference/androidx/annotation/MainThread https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#findTileTimelineEntryForTime(long)(long timeMillis)` Finds the entry which should be active at the given time. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/wear/tiles/TimelineBuilders.TimelineEntry` | `@https://developer.android.com/reference/androidx/annotation/MainThread [findTimelineEntryForTime](https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#findTimelineEntryForTime(long))(long timeMillis)` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#findTileTimelineEntryForTime(long)` instead. <br /> |

## Public constructors

### TilesTimelineCache

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/wear-tiles#1.2.0)

```
public TilesTimelineCache(@NonNull TimelineBuilders.Timeline timeline)
```

Default constructor.

### TilesTimelineCache

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-tiles#1.0.0) Deprecated in [1.2.0](https://developer.android.com/jetpack/androidx/releases/wear-tiles#1.2.0)

```
public [TilesTimelineCache](https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#TilesTimelineCache(androidx.wear.tiles.TimelineBuilders.Timeline))(@NonNull TimelineBuilders.Timeline timeline)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#TilesTimelineCache(androidx.wear.protolayout.TimelineBuilders.Timeline)` instead.

Default constructor.

## Public methods

### findClosestTileTimelineEntry

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/wear-tiles#1.2.0)

```
@MainThread
public @Nullable TimelineBuilders.TimelineEntry findClosestTileTimelineEntry(long timeMillis)
```

A (very) inexact version of `https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#findTimelineEntryForTime(long)` which finds the closest timeline entry to the current time, regardless of validity. This should only used as a fallback if `findTimelineEntryForTime` fails, so it can attempt to at least show something.

By this point, we're technically in an error state, so just show _something_. Note that calling this if `findTimelineEntryForTime` returns a valid entry is invalid, and may lead to incorrect results.

| Parameters |
|---|---|
| `long timeMillis` | The time to search from, in milliseconds. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/wear/protolayout/TimelineBuilders.TimelineEntry` | The timeline entry with validity period closest to `timeMillis`. |

### findClosestTimelineEntry

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-tiles#1.0.0) Deprecated in [1.2.0](https://developer.android.com/jetpack/androidx/releases/wear-tiles#1.2.0)

```
@MainThread
public @Nullable TimelineBuilders.TimelineEntry [findClosestTimelineEntry](https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#findClosestTimelineEntry(long))(long timeMillis)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#findClosestTileTimelineEntry(long)` instead.

A (very) inexact version of `https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#findTimelineEntryForTime(long)` which finds the closest timeline entry to the current time, regardless of validity. This should only used as a fallback if `findTimelineEntryForTime` fails, so it can attempt to at least show something.

By this point, we're technically in an error state, so just show _something_. Note that calling this if `findTimelineEntryForTime` returns a valid entry is invalid, and may lead to incorrect results.

| Parameters |
|---|---|
| `long timeMillis` | The time to search from, in milliseconds. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/wear/tiles/TimelineBuilders.TimelineEntry` | The timeline entry with validity period closest to `timeMillis`. |

### findCurrentTimelineEntryExpiry

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/wear-tiles#1.2.0)

```
@MainThread
public long findCurrentTimelineEntryExpiry(
    @NonNull TimelineBuilders.TimelineEntry entry,
    long fromTimeMillis
)
```

Finds when the timeline entry `entry` should be considered "expired". This is either when it is no longer valid (i.e. end_millis), or when another entry should be presented instead.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/protolayout/TimelineBuilders.TimelineEntry entry` | The entry to find the expiry time of. |
| `long fromTimeMillis` | The time to start searching from. The returned time will never be lower than the value passed here. |

| Returns |
|---|---|
| `long` | The time in millis that `entry` should be considered to be expired. This value will be `https://developer.android.com/reference/java/lang/Long.html#MAX_VALUE` if `entry` does not expire. |

### findCurrentTimelineEntryExpiry

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-tiles#1.0.0) Deprecated in [1.2.0](https://developer.android.com/jetpack/androidx/releases/wear-tiles#1.2.0)

```
@MainThread
public long [findCurrentTimelineEntryExpiry](https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#findCurrentTimelineEntryExpiry(androidx.wear.tiles.TimelineBuilders.TimelineEntry,long))(
    @NonNull TimelineBuilders.TimelineEntry entry,
    long fromTimeMillis
)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#findCurrentTimelineEntryExpiry(androidx.wear.protolayout.TimelineBuilders.TimelineEntry,long)` instead.

Finds when the timeline entry `entry` should be considered "expired". This is either when it is no longer valid (i.e. end_millis), or when another entry should be presented instead.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/wear/tiles/TimelineBuilders.TimelineEntry entry` | The entry to find the expiry time of. |
| `long fromTimeMillis` | The time to start searching from. The returned time will never be lower than the value passed here. |

| Returns |
|---|---|
| `long` | The time in millis that `entry` should be considered to be expired. This value will be `https://developer.android.com/reference/java/lang/Long.html#MAX_VALUE` if `entry` does not expire. |

### findTileTimelineEntryForTime

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/wear-tiles#1.2.0)

```
@MainThread
public @Nullable TimelineBuilders.TimelineEntry findTileTimelineEntryForTime(long timeMillis)
```

Finds the entry which should be active at the given time. This will return the entry which has the _shortest_ validity period at the current time, if validity periods overlap. Note that an entry which has no validity period set will be considered a "default" and will be used if no other entries are suitable.

| Parameters |
|---|---|
| `long timeMillis` | The time to base the search on, in milliseconds. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/wear/protolayout/TimelineBuilders.TimelineEntry` | The timeline entry which should be active at the given time. Returns `null` if none are valid. |

### findTimelineEntryForTime

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-tiles#1.0.0) Deprecated in [1.2.0](https://developer.android.com/jetpack/androidx/releases/wear-tiles#1.2.0)

```
@MainThread
public @Nullable TimelineBuilders.TimelineEntry [findTimelineEntryForTime](https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#findTimelineEntryForTime(long))(long timeMillis)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/wear/tiles/timeline/TilesTimelineCache#findTileTimelineEntryForTime(long)` instead.

Finds the entry which should be active at the given time. This will return the entry which has the _shortest_ validity period at the current time, if validity periods overlap. Note that an entry which has no validity period set will be considered a "default" and will be used if no other entries are suitable.

| Parameters |
|---|---|
| `long timeMillis` | The time to base the search on, in milliseconds. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/wear/tiles/TimelineBuilders.TimelineEntry` | The timeline entry which should be active at the given time. Returns `null` if none are valid. |