T
- The type of data that will obtained for the given uri (For example, InputStream
or ParcelFileDescriptor
.public abstract class LocalUriFetcher<T> extends Object implements DataFetcher<T>
ContentResolver
to load data from a Uri
pointing to a local resource.DataFetcher.DataCallback<T>
构造器和说明 |
---|
LocalUriFetcher(ContentResolver contentResolver,
Uri uri)
Opens an input stream for a uri pointing to a local asset.
|
限定符和类型 | 方法和说明 |
---|---|
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(Uri uri,
ContentResolver contentResolver)
Returns a concrete data type from the given
Uri using the given ContentResolver . |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getDataClass
public LocalUriFetcher(ContentResolver contentResolver, Uri uri)
contentResolver
- Any ContentResolver
.uri
- A Uri pointing to a local asset. This load will fail if the uri isn't openable
by ContentResolver.openInputStream(android.net.Uri)
ContentResolver.openInputStream(android.net.Uri)
public final void loadData(@NonNull Priority priority, @NonNull DataFetcher.DataCallback<? super T> callback)
DataFetcher
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.
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.
loadData
在接口中 DataFetcher<T>
priority
- The priority with which the request should be completed.callback
- The callback to use when the request is completewhere the data retuned will be cleaned up
public void cleanup()
DataFetcher
DataFetcher.loadData(com.bumptech.glide.Priority,
com.bumptech.glide.load.data.DataFetcher.DataCallback)
has been decoded by the
ResourceDecoder
.
Note - this method will be run on a background thread so blocking I/O is safe.
cleanup
在接口中 DataFetcher<T>
public void cancel()
DataFetcher
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.
cancel
在接口中 DataFetcher<T>
@NonNull public DataSource getDataSource()
DataFetcher
DataSource
this fetcher will return data from.getDataSource
在接口中 DataFetcher<T>
protected abstract T loadResource(Uri uri, ContentResolver contentResolver) throws FileNotFoundException
Uri
using the given ContentResolver
.protected abstract void close(T data) throws IOException
Note - We can't rely on the closeable interface because it was added after our min API level. See issue #157.
data
- The data to close.IOException