CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-com-github-bumptech-glide--glide

A fast and efficient open source media management and image loading framework for Android that wraps media decoding, memory and disk caching, and resource pooling into a simple and easy to use interface.

Pending
Overview
Eval results
Files

request-management.mddocs/

Request Management

Core request management functionality providing lifecycle-aware image loading with the fluent API pattern. This is the foundation of all Glide operations.

Capabilities

Glide Entry Point

Main facade class providing static methods to create lifecycle-aware request managers.

/**
 * Main entry point for Glide requests with automatic lifecycle management
 */
public final class Glide {
    /** Create request manager tied to application lifecycle */
    @NonNull public static RequestManager with(@NonNull Context context);
    
    /** Create request manager tied to activity lifecycle */
    @NonNull public static RequestManager with(@NonNull Activity activity);
    
    /** Create request manager tied to fragment lifecycle */
    @NonNull public static RequestManager with(@NonNull Fragment fragment);
    
    /** Create request manager tied to FragmentActivity lifecycle */
    @NonNull public static RequestManager with(@NonNull FragmentActivity activity);
    
    /** Get Glide singleton instance */
    @NonNull public static Glide get(@NonNull Context context);
    
    /** Initialize with custom configuration */
    public static void init(@NonNull Context context, @NonNull GlideBuilder builder);
    
    /** Cleanup resources */
    public static void tearDown();
}

Usage Examples:

// Application context - lives for app lifetime
RequestManager appManager = Glide.with(getApplicationContext());

// Activity context - automatically paused/resumed with activity
RequestManager activityManager = Glide.with(this); // from Activity

// Fragment context - handles fragment lifecycle
RequestManager fragmentManager = Glide.with(this); // from Fragment

RequestManager

Manages requests with lifecycle awareness and provides entry points for creating request builders.

/**
 * Manages image requests with lifecycle awareness
 */
public class RequestManager implements ComponentCallbacks2, LifecycleListener {
    /** Load image from URL string */
    @NonNull public RequestBuilder<Drawable> load(@Nullable String string);
    
    /** Load image from URI */
    @NonNull public RequestBuilder<Drawable> load(@Nullable Uri uri);
    
    /** Load image from File */
    @NonNull public RequestBuilder<Drawable> load(@Nullable File file);
    
    /** Load image from resource ID */
    @NonNull public RequestBuilder<Drawable> load(@Nullable @DrawableRes Integer resourceId);
    
    /** Load image from byte array */
    @NonNull public RequestBuilder<Drawable> load(@Nullable byte[] model);
    
    /** Load image from Bitmap */
    @NonNull public RequestBuilder<Drawable> load(@Nullable Bitmap bitmap);
    
    /** Load image from Drawable */
    @NonNull public RequestBuilder<Drawable> load(@Nullable Drawable drawable);
    
    /** Create request builder for specific type */
    @NonNull public <ResourceType> RequestBuilder<ResourceType> as(@NonNull Class<ResourceType> resourceClass);
    
    /** Download only (no display) */
    @NonNull public RequestBuilder<File> download(@Nullable Object model);
    
    /** Download image data as bytes */
    @NonNull public RequestBuilder<File> downloadOnly();
    
    /** Clear specific target */
    public void clear(@NonNull View view);
    public void clear(@Nullable Target<?> target);
    
    /** Lifecycle management */
    public void pauseRequests();
    public void pauseAllRequests();
    public void resumeRequests();  
    public void pauseRequestsRecursive();
    public void resumeRequestsRecursive();
    
    /** Check if paused */
    public boolean isPaused();
    
    /** Apply default request options to all requests */
    @NonNull public RequestManager applyDefaultRequestOptions(@NonNull RequestOptions requestOptions);
    
    /** Set default transition options */
    @NonNull public <T> RequestManager setDefaultTransitionOptions(@NonNull Class<T> clazz, @Nullable TransitionOptions<?, T> options);
}

Usage Examples:

RequestManager requestManager = Glide.with(context);

// Load different types of sources
requestManager.load("https://example.com/image.jpg").into(imageView);
requestManager.load(R.drawable.placeholder).into(imageView);
requestManager.load(new File("/path/to/image.png")).into(imageView);
requestManager.load(uriFromContentProvider).into(imageView);

// Type-specific requests
requestManager.as(Bitmap.class).load(imageUrl).into(customBitmapTarget);
requestManager.as(GifDrawable.class).load(gifUrl).into(imageView);

// Download only
requestManager.download(imageUrl).into(downloadTarget);

// Lifecycle management
requestManager.pauseRequests(); // Pause all requests
requestManager.resumeRequests(); // Resume requests
requestManager.clear(imageView); // Clear specific request

RequestBuilder

Fluent API for configuring image requests with method chaining.

/**
 * Fluent request builder for configuring image loading
 */
public class RequestBuilder<TranscodeType> implements Cloneable, ModelTypes<RequestBuilder<TranscodeType>> {
    /** Load from various model types (inherited from ModelTypes) */
    @NonNull public RequestBuilder<TranscodeType> load(@Nullable Object model);
    @NonNull public RequestBuilder<TranscodeType> load(@Nullable Bitmap bitmap);
    @NonNull public RequestBuilder<TranscodeType> load(@Nullable Drawable drawable);
    @NonNull public RequestBuilder<TranscodeType> load(@Nullable String string);
    @NonNull public RequestBuilder<TranscodeType> load(@Nullable Uri uri);
    @NonNull public RequestBuilder<TranscodeType> load(@Nullable File file);
    @NonNull public RequestBuilder<TranscodeType> load(@Nullable @RawRes @DrawableRes Integer resourceId);
    @NonNull public RequestBuilder<TranscodeType> load(@Nullable byte[] model);
    
    /** Apply request options */
    @NonNull public RequestBuilder<TranscodeType> apply(@NonNull RequestOptions requestOptions);
    
    /** Set thumbnail request */
    @NonNull public RequestBuilder<TranscodeType> thumbnail(@Nullable RequestBuilder<TranscodeType> thumbnailRequest);
    @NonNull public RequestBuilder<TranscodeType> thumbnail(float sizeMultiplier);
    
    /** Set request listener */
    @NonNull public RequestBuilder<TranscodeType> listener(@Nullable RequestListener<TranscodeType> requestListener);
    
    /** Add request listener */
    @NonNull public RequestBuilder<TranscodeType> addListener(@Nullable RequestListener<TranscodeType> requestListener);
    
    /** Set error request */
    @NonNull public RequestBuilder<TranscodeType> error(@Nullable RequestBuilder<TranscodeType> errorBuilder);
    
    /** Clone request builder */
    @SuppressWarnings("unchecked") 
    @CheckResult
    @Override
    public RequestBuilder<TranscodeType> clone();
    
    /** Load into target */
    @NonNull public <Y extends Target<TranscodeType>> Y into(@NonNull Y target);
    @NonNull public ViewTarget<ImageView, TranscodeType> into(@NonNull ImageView view);
    
    /** Submit for background execution */
    @NonNull public FutureTarget<TranscodeType> submit(int width, int height);
    @NonNull public FutureTarget<TranscodeType> submit();
    
    /** Preload into cache */
    @NonNull public Target<TranscodeType> preload(int width, int height);
    @NonNull public Target<TranscodeType> preload();
}

Usage Examples:

RequestBuilder<Drawable> builder = Glide.with(context).load(imageUrl);

// Method chaining
builder
    .placeholder(R.drawable.loading)
    .error(R.drawable.error) 
    .centerCrop()
    .into(imageView);

// Thumbnail loading
Glide.with(context)
    .load(highResImageUrl)
    .thumbnail(0.25f) // Load at 25% size first
    .into(imageView);

// Error fallback
Glide.with(context)
    .load(primaryImageUrl)
    .error(Glide.with(context).load(fallbackImageUrl))
    .into(imageView);

// Preloading
Glide.with(context)
    .load(imageUrl)
    .preload(300, 300);

// Background loading
FutureTarget<Drawable> future = Glide.with(context)
    .load(imageUrl)
    .submit(500, 500);

Request Lifecycle Management

Methods for controlling request execution and lifecycle.

/**
 * Request interface for lifecycle control
 */
public interface Request {
    /** Begin request execution */
    void begin();
    
    /** Clear/cancel request */
    void clear();
    
    /** Check if request is paused */
    boolean isPaused();
    
    /** Pause request execution */
    void pause();
    
    /** Check request state */
    boolean isRunning();
    boolean isComplete();
    boolean isCleared();
    boolean isFailed();
    
    /** Check if requests are equivalent */
    boolean isEquivalentTo(@NonNull Request other);
}

Usage Examples:

// Get request from target
Target<Drawable> target = Glide.with(context)
    .load(imageUrl)
    .into(imageView);

Request request = target.getRequest();
if (request != null) {
    request.pause(); // Pause specific request
    request.clear(); // Cancel and clear request
}

// Check request state
if (request.isRunning()) {
    // Request is currently executing
}

Types

// Model types interface
public interface ModelTypes<T> {
    @NonNull T load(@Nullable Object model);
    @NonNull T load(@Nullable Bitmap bitmap);
    @NonNull T load(@Nullable Drawable drawable);
    @NonNull T load(@Nullable String string);
    @NonNull T load(@Nullable Uri uri);
    @NonNull T load(@Nullable File file);
    @NonNull T load(@Nullable @RawRes @DrawableRes Integer resourceId);
    @NonNull T load(@Nullable byte[] model);
}

// Lifecycle listener interface
public interface LifecycleListener {
    void onStart();
    void onStop();
    void onDestroy();
}

Install with Tessl CLI

npx tessl i tessl/maven-com-github-bumptech-glide--glide

docs

caching-strategies.md

error-handling-debugging.md

index.md

modules-configuration.md

request-configuration.md

request-management.md

targets-loading.md

transformations.md

transitions-animations.md

tile.json