Class CustomTarget<T>

java.lang.Object
com.bumptech.glide.request.target.CustomTarget<T>
Type Parameters:
T - The type of resource that will be loaded (e.g. Bitmap).
All Implemented Interfaces:
LifecycleListener, Target<T>
Direct Known Subclasses:
AppWidgetTarget, NotificationTarget, PreloadTarget

public abstract class CustomTarget<T> extends Object implements Target<T>
A base Target for loading resources (Bitmap, Drawable etc) that are used outside of Views.

If you're loading a resource into a View, use RequestBuilder.into(ImageView), a subclass of ImageViewTarget, or CustomViewTarget. Using this class to load resources into Views can prevent Glide from correctly cancelling any previous loads, which may result in incorrect images appearing in the view, especially in scrolling views like androidx.recyclerview.widget.RecyclerView.

You MUST implement Target.onLoadCleared(Drawable) and ensure that all references to any resource passed into the target in Target.onResourceReady(Object, Transition) are removed before Target.onLoadCleared(Drawable) completes. Failing to do so can result in graphical corruption, crashes caused by recycled Bitmaps, and other undefined behavior. It is never safe to leave Target.onLoadCleared(Drawable) unimplemented or empty. Even if you do not manually clear this Target, Glide may do so automatically after certain lifecycle events in Fragments and Activitys.

This class can only be used with Target.SIZE_ORIGINAL or when the desired resource dimensions are known when the Target is created. If you'd like to run some asynchronous process and make full use of getSize(SizeReadyCallback) and SizeReadyCallback, extend Target directly instead of using this class.

  • Constructor Details

    • CustomTarget

      public CustomTarget()
      Creates a new CustomTarget that will attempt to load the resource in its original size.

      This constructor can cause very memory inefficient loads if the resource is large and can cause OOMs. It's provided as a convenience for when you'd like to specify dimensions with BaseRequestOptions.override(int). In all other cases, prefer CustomTarget(int, int).

    • CustomTarget

      public CustomTarget(int width, int height)
      Creates a new CustomTarget that will return the given width and height as the requested size (unless overridden by BaseRequestOptions.override(int) in the request).
      Parameters:
      width - The requested width in pixels (> 0, or == Target.SIZE_ORIGINAL).
      height - The requested height in pixels (> 0, or == Target.SIZE_ORIGINAL).
      Throws:
      IllegalArgumentException - if width/height doesn't meet the requirement: > 0, or == Target.SIZE_ORIGINAL
  • Method Details

    • onStart

      public void onStart()
      Description copied from interface: LifecycleListener
      Callback for when Fragment.onStart()} or Activity.onStart() is called.
      Specified by:
      onStart in interface LifecycleListener
    • onStop

      public void onStop()
      Description copied from interface: LifecycleListener
      Callback for when Fragment.onStop()} or Activity.onStop()} is called.
      Specified by:
      onStop in interface LifecycleListener
    • onDestroy

      public void onDestroy()
      Description copied from interface: LifecycleListener
      Callback for when Fragment.onDestroy()} or Activity.onDestroy() is called.
      Specified by:
      onDestroy in interface LifecycleListener
    • onLoadStarted

      public void onLoadStarted(@Nullable Drawable placeholder)
      Description copied from interface: Target
      A lifecycle callback that is called when a load is started.

      Note - This may not be called for every load, it is possible for example for loads to fail before the load starts (when the model object is null).

      Note - This method may be called multiple times before any other lifecycle method is called. Loads can be paused and restarted due to lifecycle or connectivity events and each restart may cause a call here.

      Specified by:
      onLoadStarted in interface Target<T>
      Parameters:
      placeholder - The placeholder drawable to optionally show, or null.
    • onLoadFailed

      public void onLoadFailed(@Nullable Drawable errorDrawable)
      Description copied from interface: Target
      A mandatory lifecycle callback that is called when a load fails.

      Note - This may be called before Target.onLoadStarted(android.graphics.drawable.Drawable) if the model object is null.

      You must ensure that any current Drawable received in Target.onResourceReady(Object, Transition) is no longer used before redrawing the container (usually a View) or changing its visibility.

      Specified by:
      onLoadFailed in interface Target<T>
      Parameters:
      errorDrawable - The error drawable to optionally show, or null.
    • getSize

      public final void getSize(@NonNull SizeReadyCallback cb)
      Description copied from interface: Target
      A method to retrieve the size of this target.
      Specified by:
      getSize in interface Target<T>
      Parameters:
      cb - The callback that must be called when the size of the target has been determined
    • removeCallback

      public final void removeCallback(@NonNull SizeReadyCallback cb)
      Description copied from interface: Target
      Removes the given callback from the pending set if it's still retained.
      Specified by:
      removeCallback in interface Target<T>
      Parameters:
      cb - The callback to remove.
    • setRequest

      public final void setRequest(@Nullable Request request)
      Description copied from interface: Target
      Sets the current request for this target to retain, should not be called outside of Glide.
      Specified by:
      setRequest in interface Target<T>
    • getRequest

      @Nullable public final Request getRequest()
      Description copied from interface: Target
      Retrieves the current request for this target, should not be called outside of Glide.
      Specified by:
      getRequest in interface Target<T>