public interface

Consumer

com.facebook.imagepipeline.producers.Consumer<T>
Known Indirect Subclasses

Class Overview

Consumes data produced by Producer.

The producer uses this interface to notify its client when new data is ready or an error occurs. Execution of the image request is structured as a sequence of Producers. Each one consumes data produced by producer preceding it in the sequence.

For example decode is a producer that consumes data produced by the disk cache get producer.

The consumer is passed new intermediate results via onNewResult(isLast = false) method. Each consumer should expect that one of the following methods will be called exactly once, as the very last producer call:

  • onNewResult(isLast = true) if producer finishes successfully with a final result
  • onFailure if producer failed to produce a final result
  • onCancellation if producer was cancelled before a final result could be created

Implementations of this interface must be thread safe, as callback methods might be called on different threads.

Summary

Nested Classes
@interface Consumer.Status Frame type that has been drawn. 
Constants
int DO_NOT_CACHE_ENCODED Status flag to show the result should not be cached in disk or encoded caches, even if it's the last result.
int IS_LAST Status flag to show whether the result being received is the last one coming or to expect more.
int IS_PARTIAL_RESULT Status flag to show the result does not represent the whole image, just part of it.
int IS_PLACEHOLDER Status flag to show whether the result is a placeholder for the final result.
int NO_FLAGS Convenience constant for a status with no flags set.
Public Methods
abstract void onCancellation()
Called by a producer whenever it is cancelled and won't produce any more results
abstract void onFailure(Throwable t)
Called by a producer whenever it terminates further work due to Throwable being thrown.
abstract void onNewResult(T newResult, int status)
Called by a producer whenever new data is produced.
abstract void onProgressUpdate(float progress)
Called when the progress updates.

Constants

public static final int DO_NOT_CACHE_ENCODED

Status flag to show the result should not be cached in disk or encoded caches, even if it's the last result.

Constant Value: 2 (0x00000002)

public static final int IS_LAST

Status flag to show whether the result being received is the last one coming or to expect more.

Constant Value: 1 (0x00000001)

public static final int IS_PARTIAL_RESULT

Status flag to show the result does not represent the whole image, just part of it. This may be due to a cancellation or failure while the file was being downloaded or because only part of the image was requested.

Constant Value: 8 (0x00000008)

public static final int IS_PLACEHOLDER

Status flag to show whether the result is a placeholder for the final result. Should only be set if IS_LAST is not set.

Constant Value: 4 (0x00000004)

public static final int NO_FLAGS

Convenience constant for a status with no flags set. The absence of IS_LAST means this status can be used for intermediate results. This constant should never be used when checking for flags.

Constant Value: 0 (0x00000000)

Public Methods

public abstract void onCancellation ()

Called by a producer whenever it is cancelled and won't produce any more results

public abstract void onFailure (Throwable t)

Called by a producer whenever it terminates further work due to Throwable being thrown. This method should not throw an exception.

public abstract void onNewResult (T newResult, int status)

Called by a producer whenever new data is produced. This method should not throw an exception.

In case when result is closeable resource producer will close it after onNewResult returns. Consumer needs to make copy of it if the resource must be accessed after that. Fortunately, with CloseableReferences, that should not impose too much overhead.

Parameters
status bitwise values describing the returned result

public abstract void onProgressUpdate (float progress)

Called when the progress updates.

Parameters
progress in range [0, 1]