Class AssetPathFetcher<T>

  • Type Parameters:
    T - The type of data obtained from the asset path (InputStream, FileDescriptor etc).
    All Implemented Interfaces:
    DataFetcher<T>
    Direct Known Subclasses:
    FileDescriptorAssetPathFetcher, StreamAssetPathFetcher

    public abstract class AssetPathFetcher<T>
    extends java.lang.Object
    implements DataFetcher<T>
    An abstract class for obtaining data for an asset path using an AssetManager.
    • Constructor Summary

      Constructors 
      Constructor Description
      AssetPathFetcher​(android.content.res.AssetManager assetManager, java.lang.String assetPath)  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      void cancel()
      A method that will be called when a load is no longer relevant and has been cancelled.
      void cleanup()
      Cleanup or recycle any resources used by this data fetcher.
      protected abstract void close​(T data)
      Closes the concrete data type if necessary.
      DataSource getDataSource()
      Returns the DataSource this fetcher will return data from.
      void loadData​(Priority priority, DataFetcher.DataCallback<? super T> callback)
      Fetch data from which a resource can be decoded.
      protected abstract T loadResource​(android.content.res.AssetManager assetManager, java.lang.String path)
      Opens the given asset path with the given AssetManager and returns the concrete data type returned by the AssetManager.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • AssetPathFetcher

        public AssetPathFetcher​(android.content.res.AssetManager assetManager,
                                java.lang.String assetPath)
    • Method Detail

      • loadData

        public void loadData​(@NonNull
                             Priority priority,
                             @NonNull
                             DataFetcher.DataCallback<? super T> callback)
        Description copied from interface: DataFetcher
        Fetch data from which a resource can be decoded.

        This will always be called on background thread so it is safe to perform long running tasks here. Any third party libraries called must be thread safe (or move the work to another thread) since this method will be called from a thread in a ExecutorService that may have more than one background thread. You MUST use the DataFetcher.DataCallback once the request is complete.

        You are free to move the fetch work to another thread and call the callback from there.

        This method will only be called when the corresponding resource is not in the cache.

        Note - this method will be run on a background thread so blocking I/O is safe.

        Specified by:
        loadData in interface DataFetcher<T>
        Parameters:
        priority - The priority with which the request should be completed.
        callback - The callback to use when the request is complete
        See Also:
        where the data retuned will be cleaned up
      • cancel

        public void cancel()
        Description copied from interface: DataFetcher
        A method that will be called when a load is no longer relevant and has been cancelled. This method does not need to guarantee that any in process loads do not finish. It also may be called before a load starts or after it finishes.

        The best way to use this method is to cancel any loads that have not yet started, but allow those that are in process to finish since its we typically will want to display the same resource in a different view in the near future.

        Note - this method will be run on the main thread so it should not perform blocking operations and should finish quickly.

        Specified by:
        cancel in interface DataFetcher<T>
      • loadResource

        protected abstract T loadResource​(android.content.res.AssetManager assetManager,
                                          java.lang.String path)
                                   throws java.io.IOException
        Opens the given asset path with the given AssetManager and returns the concrete data type returned by the AssetManager.
        Parameters:
        assetManager - An AssetManager to use to open the given path.
        path - A string path pointing to a resource in assets to open.
        Throws:
        java.io.IOException
      • close

        protected abstract void close​(T data)
                               throws java.io.IOException
        Closes the concrete data type if necessary.
        Parameters:
        data - The data to close.
        Throws:
        java.io.IOException