package com.bumptech.glide.request; import com.bumptech.glide.request.target.Target; /** * A class for monitoring the status of a request while images load. * * @param The type of the model being loaded. * @param The type of resource being loaded. */ public interface RequestListener { /** * Called when an exception occurs during a load. Will only be called if we currently want to display an image * for the given model in the given target. It is recommended to create a single instance per activity/fragment * rather than instantiate a new object for each call to {@code Glide.load()} to avoid object churn. * *

* It is safe to reload this or a different model or change what is displayed in the target at this point. * For example: *

     * 
     *     public void onException(Exception e, ModelType model, Target target) {
     *         target.setPlaceholder(R.drawable.a_specific_error_for_my_exception);
     *         Glide.load(model).into(target);
     *     }
     * 
     * 
*

* *

* Note - if you want to reload this or any other model after an exception, you will need to include all * relevant builder calls (like centerCrop, placeholder etc). *

* * @param e The exception, or null * @param model The model we were trying to load when the exception occurred * @param target The {@link Target} we were trying to load the image into * @return True if the listener has handled updating the target for the given exception, false to allow * Glide's request to update the target. */ public abstract boolean onException(Exception e, T model, Target target, boolean isFirstImage); /** * Called when a load completes successfully, immediately after {@link Target#onResourceReady(Object)}. * * @param resource The resource that was loaded for the target. * @param model The specific model that was used to load the image. * @param target The target the model was loaded into. * @param isFromMemoryCache True if the load completed synchronously (useful for determining whether or not to * animate) * @param isFirstResource True if this is the first resource to in this load to be loaded into the target. For * example when loading a thumbnail and a fullsize image, this will be true for the first * image to load and false for the second. * @return True if the listener has handled setting the resource on the target (including any animations), false to * allow Glide's request to update the target (again including animations). */ public abstract boolean onResourceReady(R resource, T model, Target target, boolean isFromMemoryCache, boolean isFirstResource); }