Class Loader
- java.lang.Object
-
- com.google.android.exoplayer2.upstream.Loader
-
- All Implemented Interfaces:
LoaderErrorThrower
public final class Loader extends Object implements LoaderErrorThrower
Manages the background loading ofLoader.Loadables.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceLoader.Callback<T extends Loader.Loadable>A callback to be notified ofLoaderevents.static interfaceLoader.LoadableAn object that can be loaded using aLoader.static classLoader.LoadErrorActionAction that can be taken in response toLoader.Callback.onLoadError(Loadable, long, long, IOException, int).static interfaceLoader.ReleaseCallbackA callback to be notified when aLoaderhas finished being released.static classLoader.UnexpectedLoaderExceptionThrown when an unexpected exception or error is encountered during loading.-
Nested classes/interfaces inherited from interface com.google.android.exoplayer2.upstream.LoaderErrorThrower
LoaderErrorThrower.Dummy
-
-
Field Summary
Fields Modifier and Type Field Description static Loader.LoadErrorActionDONT_RETRYDiscards the failedLoader.Loadableand ignores any errors that have occurred.static Loader.LoadErrorActionDONT_RETRY_FATALDiscards the failedLoader.Loadable.static Loader.LoadErrorActionRETRYRetries the load using the default delay.static Loader.LoadErrorActionRETRY_RESET_ERROR_COUNTRetries the load using the default delay and resets the error count.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcancelLoading()Cancels the current load.voidclearFatalError()Clears any stored fatal error.static Loader.LoadErrorActioncreateRetryAction(boolean resetErrorCount, long retryDelayMillis)Creates aLoader.LoadErrorActionfor retrying with the given parameters.booleanhasFatalError()Whether the last call tostartLoading(T, com.google.android.exoplayer2.upstream.Loader.Callback<T>, int)resulted in a fatal error.booleanisLoading()Returns whether the loader is currently loading.voidmaybeThrowError()Throws a fatal error, or a non-fatal error if loading is currently backed off and the currentLoader.Loadablehas incurred a number of errors greater than theLoaders default minimum number of retries.voidmaybeThrowError(int minRetryCount)Throws a fatal error, or a non-fatal error if loading is currently backed off and the currentLoader.Loadablehas incurred a number of errors greater than the specified minimum number of retries.voidrelease()Releases the loader.voidrelease(Loader.ReleaseCallback callback)Releases the loader.<T extends Loader.Loadable>
longstartLoading(T loadable, Loader.Callback<T> callback, int defaultMinRetryCount)Starts loading aLoader.Loadable.
-
-
-
Field Detail
-
RETRY
public static final Loader.LoadErrorAction RETRY
Retries the load using the default delay.
-
RETRY_RESET_ERROR_COUNT
public static final Loader.LoadErrorAction RETRY_RESET_ERROR_COUNT
Retries the load using the default delay and resets the error count.
-
DONT_RETRY
public static final Loader.LoadErrorAction DONT_RETRY
Discards the failedLoader.Loadableand ignores any errors that have occurred.
-
DONT_RETRY_FATAL
public static final Loader.LoadErrorAction DONT_RETRY_FATAL
Discards the failedLoader.Loadable. The next call tomaybeThrowError()will throw the last load error.
-
-
Constructor Detail
-
Loader
public Loader(String threadNameSuffix)
- Parameters:
threadNameSuffix- A name suffix for the loader's thread. This should be the name of the component using the loader.
-
-
Method Detail
-
createRetryAction
public static Loader.LoadErrorAction createRetryAction(boolean resetErrorCount, long retryDelayMillis)
Creates aLoader.LoadErrorActionfor retrying with the given parameters.- Parameters:
resetErrorCount- Whether the previous error count should be set to zero.retryDelayMillis- The number of milliseconds to wait before retrying.- Returns:
- A
Loader.LoadErrorActionfor retrying with the given parameters.
-
hasFatalError
public boolean hasFatalError()
Whether the last call tostartLoading(T, com.google.android.exoplayer2.upstream.Loader.Callback<T>, int)resulted in a fatal error. CallingmaybeThrowError()will throw the fatal error.
-
clearFatalError
public void clearFatalError()
Clears any stored fatal error.
-
startLoading
public <T extends Loader.Loadable> long startLoading(T loadable, Loader.Callback<T> callback, int defaultMinRetryCount)
Starts loading aLoader.Loadable.The calling thread must be a
Looperthread, which is the thread on which theLoader.Callbackwill be called.- Type Parameters:
T- The type of the loadable.- Parameters:
loadable- TheLoader.Loadableto load.callback- A callback to be called when the load ends.defaultMinRetryCount- The minimum number of times the load must be retried beforemaybeThrowError()will propagate an error.- Returns:
SystemClock.elapsedRealtime()when the load started.- Throws:
IllegalStateException- If the calling thread does not have an associatedLooper.
-
isLoading
public boolean isLoading()
Returns whether the loader is currently loading.
-
cancelLoading
public void cancelLoading()
Cancels the current load.- Throws:
IllegalStateException- If the loader is not currently loading.
-
release
public void release()
Releases the loader. This method should be called when the loader is no longer required.
-
release
public void release(@Nullable Loader.ReleaseCallback callback)Releases the loader. This method should be called when the loader is no longer required.- Parameters:
callback- An optional callback to be called on the loading thread once the loader has been released.
-
maybeThrowError
public void maybeThrowError() throws IOExceptionDescription copied from interface:LoaderErrorThrowerThrows a fatal error, or a non-fatal error if loading is currently backed off and the currentLoader.Loadablehas incurred a number of errors greater than theLoaders default minimum number of retries. Else does nothing.- Specified by:
maybeThrowErrorin interfaceLoaderErrorThrower- Throws:
IOException- The error.
-
maybeThrowError
public void maybeThrowError(int minRetryCount) throws IOExceptionDescription copied from interface:LoaderErrorThrowerThrows a fatal error, or a non-fatal error if loading is currently backed off and the currentLoader.Loadablehas incurred a number of errors greater than the specified minimum number of retries. Else does nothing.- Specified by:
maybeThrowErrorin interfaceLoaderErrorThrower- Parameters:
minRetryCount- A minimum retry count that must be exceeded for a non-fatal error to be thrown. Should be non-negative.- Throws:
IOException- The error.
-
-