T - The type of the object being loaded.Loader.Loadablepublic final class ParsingLoadable<T> extends Object implements Loader.Loadable
Loader.Loadable for objects that can be parsed from binary data using a ParsingLoadable.Parser.| Modifier and Type | Class | Description |
|---|---|---|
static interface |
ParsingLoadable.Parser<T> |
Parses an object from loaded data.
|
| Modifier and Type | Field | Description |
|---|---|---|
DataSpec |
dataSpec |
The
DataSpec that defines the data to be loaded. |
long |
loadTaskId |
Identifies the load task for this loadable.
|
int |
type |
The type of the data.
|
| Constructor | Description |
|---|---|
ParsingLoadable(DataSource dataSource,
Uri uri,
int type,
ParsingLoadable.Parser<? extends T> parser) |
|
ParsingLoadable(DataSource dataSource,
DataSpec dataSpec,
int type,
ParsingLoadable.Parser<? extends T> parser) |
| Modifier and Type | Method | Description |
|---|---|---|
long |
bytesLoaded() |
Returns the number of bytes loaded.
|
void |
cancelLoad() |
Cancels the load.
|
Map<String,List<String>> |
getResponseHeaders() |
Returns the response headers associated with the load.
|
T |
getResult() |
Returns the loaded object, or null if an object has not been loaded.
|
Uri |
getUri() |
Returns the
Uri from which data was read. |
void |
load() |
Performs the load, returning on completion or cancellation.
|
static <T> T |
load(DataSource dataSource,
ParsingLoadable.Parser<? extends T> parser,
Uri uri,
int type) |
Loads a single parsable object.
|
static <T> T |
load(DataSource dataSource,
ParsingLoadable.Parser<? extends T> parser,
DataSpec dataSpec,
int type) |
Loads a single parsable object.
|
public final long loadTaskId
public final int type
DATA_TYPE_* constants defined in C. For
reporting only.public ParsingLoadable(DataSource dataSource, Uri uri, int type, ParsingLoadable.Parser<? extends T> parser)
dataSource - A DataSource to use when loading the data.uri - The Uri from which the object should be loaded.type - See type.parser - Parses the object from the response.public ParsingLoadable(DataSource dataSource, DataSpec dataSpec, int type, ParsingLoadable.Parser<? extends T> parser)
dataSource - A DataSource to use when loading the data.dataSpec - The DataSpec from which the object should be loaded.type - See type.parser - Parses the object from the response.public static <T> T load(DataSource dataSource, ParsingLoadable.Parser<? extends T> parser, Uri uri, int type) throws IOException
dataSource - The DataSource through which the object should be read.parser - The ParsingLoadable.Parser to parse the object from the response.uri - The Uri of the object to read.type - The type of the data. One of the CDATA_TYPE_* constants.IOException - Thrown if there is an error while loading or parsing.public static <T> T load(DataSource dataSource, ParsingLoadable.Parser<? extends T> parser, DataSpec dataSpec, int type) throws IOException
dataSource - The DataSource through which the object should be read.parser - The ParsingLoadable.Parser to parse the object from the response.dataSpec - The DataSpec of the object to read.type - The type of the data. One of the CDATA_TYPE_* constants.IOException - Thrown if there is an error while loading or parsing.@Nullable public final T getResult()
public long bytesLoaded()
public Uri getUri()
Uri from which data was read. If redirection occurred, this is the
redirected uri. Must only be called after the load completed, failed, or was canceled.public Map<String,List<String>> getResponseHeaders()
public final void cancelLoad()
Loader.LoadableLoadable implementations should ensure that a currently executing Loader.Loadable.load() call
will exit reasonably quickly after this method is called. The Loader.Loadable.load() call may exit
either by returning or by throwing an IOException.
If there is a currently executing Loader.Loadable.load() call, then the thread on which that call
is being made will be interrupted immediately after the call to this method. Hence
implementations do not need to (and should not attempt to) interrupt the loading thread
themselves.
Although the loading thread will be interrupted, Loadable implementations should not use
the interrupted status of the loading thread in Loader.Loadable.load() to determine whether the load
has been canceled. This approach is not robust [Internal ref: b/79223737]. Instead,
implementations should use their own flag to signal cancelation (for example, using AtomicBoolean).
cancelLoad in interface Loader.Loadablepublic final void load()
throws IOException
Loader.Loadableload in interface Loader.LoadableIOException - If the input could not be loaded.