Package com.castlabs.sdk.thumbs

# Class LoadingStrategy

java.lang.Object
com.castlabs.sdk.thumbs.LoadingStrategy

All Implemented Interfaces:
  `Iterable<com.castlabs.sdk.thumbs.LoadingStrategy.Wave>`

public class LoadingStrategy extends Object implements Iterable<com.castlabs.sdk.thumbs.LoadingStrategy.Wave>
Defines in what order to load (cache) thumbnails. The goal of defining a strategy is to spread out the loading of the thumbnails so that they are not sequentially loaded and to quickly have "significant" thumbnails for most of the content in a reasonable time.

To achieve this, the LoadingStrategy defines `waves`. Each Wave defines the space between thumbnails to be loaded. A more spaced-out Wave will load fewer thumbnails and finish preloading faster, but will provide less accurate thumbnails. A less spaced Wave will provide more accurate thumbnails but taking longer to complete.

Currently, there's three ways of adding Waves:

- `LoadingStrategy.TimeWave`: defines the amount of time between thumbnails
- `LoadingStrategy.PercentageWave`: defines the time percentage of the media between thumbnails
- `LoadingStrategy.StepWave`: defines the number of thumbnails to skip between two thumbnails, regardless of their duration

To construct a LoadingStrategy use the `LoadingStrategy.Builder` and add Waves to it with its addXWave(...) methods. Order *is important*. Waves will be loaded in sequential adding order. Make sure the most spread-out Wave is added first while the most granular is added last.

Default Strategy is `ThumbsPlugin.DEFAULT_LOADING_STRATEGY`.

Since:
  4.2.39

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static final class`
  `LoadingStrategy.Builder`
  Builder for `LoadingStrategy`.
  `static class`
  `LoadingStrategy.EntriesIterator`
  Iterator for thumbnail entries.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `long`
  `getLoadStartDelayMs()`
  The delay time until thumbnail load starts in milliseconds
  `Iterator<com.castlabs.sdk.thumbs.LoadingStrategy.Wave>`
  `iterator()`

  ### Methods inherited from class java.lang.Object

  `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface java.lang.Iterable

  `forEach, spliterator`

- ## Method Details

  - ### getLoadStartDelayMs

    public long getLoadStartDelayMs()
    The delay time until thumbnail load starts in milliseconds
    Returns:
      delay time until thumbnail load starts in milliseconds

  - ### iterator

    @NonNull public Iterator<com.castlabs.sdk.thumbs.LoadingStrategy.Wave> iterator()
    Specified by:
      `iterator` in interface `Iterable<com.castlabs.sdk.thumbs.LoadingStrategy.Wave>`