Class GlideBuilder

java.lang.Object
com.bumptech.glide.GlideBuilder

public final class GlideBuilder extends Object
A builder class for setting default structural classes for Glide to use.
  • Constructor Details

    • GlideBuilder

      public GlideBuilder()
  • Method Details

    • setBitmapPool

      @NonNull public GlideBuilder setBitmapPool(@Nullable BitmapPool bitmapPool)
      Sets the BitmapPool implementation to use to store and retrieve reused Bitmaps.
      Parameters:
      bitmapPool - The pool to use.
      Returns:
      This builder.
    • setArrayPool

      @NonNull public GlideBuilder setArrayPool(@Nullable ArrayPool arrayPool)
      Sets the ArrayPool implementation to allow variable sized arrays to be stored and retrieved as needed.
      Parameters:
      arrayPool - The pool to use.
      Returns:
      This builder.
    • setMemoryCache

      @NonNull public GlideBuilder setMemoryCache(@Nullable MemoryCache memoryCache)
      Sets the MemoryCache implementation to store Resources that are not currently in use.
      Parameters:
      memoryCache - The cache to use.
      Returns:
      This builder.
    • setDiskCache

      @NonNull public GlideBuilder setDiskCache(@Nullable DiskCache.Factory diskCacheFactory)
      Sets the DiskCache.Factory implementation to use to construct the DiskCache to use to store Resource data on disk.
      Parameters:
      diskCacheFactory - The disk cache factory to use.
      Returns:
      This builder.
    • setResizeExecutor

      @Deprecated public GlideBuilder setResizeExecutor(@Nullable GlideExecutor service)
      Sets the GlideExecutor to use when retrieving Resources that are not already in the cache.

      The thread count defaults to the number of cores available on the device, with a maximum of 4.

      Use the GlideExecutor.newSourceExecutor() methods if you'd like to specify options for the source executor.

      Parameters:
      service - The ExecutorService to use.
      Returns:
      This builder.
      See Also:
    • setSourceExecutor

      @NonNull public GlideBuilder setSourceExecutor(@Nullable GlideExecutor service)
      Sets the GlideExecutor to use when retrieving Resources that are not already in the cache.

      The thread count defaults to the number of cores available on the device, with a maximum of 4.

      Use the GlideExecutor.newSourceExecutor() methods if you'd like to specify options for the source executor.

      Parameters:
      service - The ExecutorService to use.
      Returns:
      This builder.
      See Also:
    • setDiskCacheExecutor

      @NonNull public GlideBuilder setDiskCacheExecutor(@Nullable GlideExecutor service)
      Sets the GlideExecutor to use when retrieving Resources that are currently in Glide's disk caches.

      Defaults to a single thread which is usually the best combination of memory usage, jank, and performance, even on high end devices.

      Use the GlideExecutor.newDiskCacheExecutor() if you'd like to specify options for the disk cache executor.

      Parameters:
      service - The GlideExecutor to use.
      Returns:
      This builder.
      See Also:
    • setAnimationExecutor

      @NonNull public GlideBuilder setAnimationExecutor(@Nullable GlideExecutor service)
      Sets the GlideExecutor to use when loading frames of animated images and particularly of GifDrawables.

      Defaults to one or two threads, depending on the number of cores available.

      Use the GlideExecutor.newAnimationExecutor() methods if you'd like to specify options for the animation executor.

      Parameters:
      service - The GlideExecutor to use.
      Returns:
      This builder.
    • setDefaultRequestOptions

      @NonNull public GlideBuilder setDefaultRequestOptions(@Nullable RequestOptions requestOptions)
      Sets the default RequestOptions to use for all loads across the app.

      Applying additional options with RequestBuilder.apply(BaseRequestOptions) will override defaults set here.

      Parameters:
      requestOptions - The options to use by default.
      Returns:
      This builder.
      See Also:
    • setDefaultRequestOptions

      @NonNull public GlideBuilder setDefaultRequestOptions(@NonNull Glide.RequestOptionsFactory factory)
      Sets a factory for the default RequestOptions to use for all loads across the app and returns this GlideBuilder.

      This factory will NOT be called once per load. Instead it will be called a handful of times and memoized. It's not safe to assume that this factory will be called again for every new load.

      Applying additional options with RequestBuilder.apply(BaseRequestOptions) will override defaults set here.

      See Also:
    • setDefaultTransitionOptions

      @NonNull public <T> GlideBuilder setDefaultTransitionOptions(@NonNull Class<T> clazz, @Nullable TransitionOptions<?,T> options)
      Sets the default TransitionOptions to use when starting a request that will load a resource with the given Class.

      It's preferable but not required for the requested resource class to match the resource class applied here as long as the resource class applied here is assignable from the requested resource class. For example you can set a default transition for Drawable and that default transition will be used if you subsequently start requests for specific Drawable types like GifDrawable or BitmapDrawable. Specific types are always preferred so if you register a default transition for both Drawable and BitmapDrawable and then start a request for BitmapDrawables, the transition you registered for BitmapDrawables will be used.

    • setMemorySizeCalculator

      @NonNull public GlideBuilder setMemorySizeCalculator(@NonNull MemorySizeCalculator.Builder builder)
      Sets the MemorySizeCalculator to use to calculate maximum sizes for default MemoryCaches and/or default BitmapPools.
      Parameters:
      builder - The builder to use (will not be modified).
      Returns:
      This builder.
      See Also:
    • setMemorySizeCalculator

      @NonNull public GlideBuilder setMemorySizeCalculator(@Nullable MemorySizeCalculator calculator)
      Sets the MemorySizeCalculator to use to calculate maximum sizes for default MemoryCaches and/or default BitmapPools.

      The given MemorySizeCalculator will not affect custom pools or caches provided via setBitmapPool(BitmapPool) or setMemoryCache(MemoryCache).

      Parameters:
      calculator - The calculator to use.
      Returns:
      This builder.
    • setConnectivityMonitorFactory

      @NonNull public GlideBuilder setConnectivityMonitorFactory(@Nullable ConnectivityMonitorFactory factory)
      Sets the ConnectivityMonitorFactory to use to notify RequestManager of connectivity events. If not set DefaultConnectivityMonitorFactory would be used.
      Parameters:
      factory - The factory to use
      Returns:
      This builder.
    • setLogLevel

      @NonNull public GlideBuilder setLogLevel(int logLevel)
      Sets a log level constant from those in Log to indicate the desired log verbosity.

      The level must be one of Log.VERBOSE, Log.DEBUG, Log.INFO, Log.WARN, or Log.ERROR.

      Log.VERBOSE means one or more lines will be logged per request, including timing logs and failures. Log.DEBUG means at most one line will be logged per successful request, including timing logs, although many lines may be logged for failures including multiple complete stack traces. Log.INFO means failed loads will be logged including multiple complete stack traces, but successful loads will not be logged at all. Log.WARN means only summaries of failed loads will be logged. Log.ERROR means only exceptional cases will be logged.

      All logs will be logged using the 'Glide' tag.

      Many other debugging logs are available in individual classes. The log level supplied here only controls a small set of informative and well formatted logs. Users wishing to debug certain aspects of the library can look for individual TAG variables at the tops of classes and use adb shell setprop log.tag.TAG to enable or disable any relevant tags.

      Parameters:
      logLevel - The log level to use from Log.
      Returns:
      This builder.
    • setIsActiveResourceRetentionAllowed

      @NonNull public GlideBuilder setIsActiveResourceRetentionAllowed(boolean isActiveResourceRetentionAllowed)
      If set to true, allows Glide to re-capture resources that are loaded into Targets which are subsequently de-referenced and garbage collected without being cleared.

      Defaults to false.

      Glide's resource re-use system is permissive, which means that's acceptable for callers to load resources into Targets and then never clear the Target. To do so, Glide uses WeakReferences to track resources that belong to Targets that haven't yet been cleared. Setting this method to true allows Glide to also maintain a hard reference to the underlying resource so that if the Target is garbage collected, Glide can return the underlying resource to it's memory cache so that subsequent requests will not unexpectedly re-load the resource from disk or source. As a side affect, it will take the system slightly longer to garbage collect the underlying resource because the weak reference has to be cleared and processed before the hard reference is removed. As a result, setting this method to true may transiently increase the memory usage of an application.

      Leaving this method at the default false value will allow the platform to garbage collect resources more quickly, but will lead to unexpected memory cache misses if callers load resources into Targets but never clear them.

      If you set this method to true you must not call Bitmap.recycle() or mutate any Bitmaps returned by Glide. If this method is set to false, recycling or mutating Bitmaps is inefficient but safe as long as you do not clear the corresponding Target used to load the Bitmap. However, if you set this method to true and recycle or mutate any returned Bitmaps or other mutable resources, Glide may recover those resources and attempt to use them later on, resulting in crashes, graphical corruption or undefined behavior.

      Regardless of what value this method is set to, it's always good practice to clear Targets when you're done with the corresponding resource. Clearing Targets allows Glide to maximize resource re-use, minimize memory overhead and minimize unexpected behavior resulting from edge cases. If you use RequestManager.clear(Target), calling Bitmap.recycle() or mutating Bitmaps is not only unsafe, it's also totally unnecessary and should be avoided. In all cases, prefer RequestManager.clear(Target) to Bitmap.recycle().

      Returns:
      This builder.
    • addGlobalRequestListener

      @NonNull public GlideBuilder addGlobalRequestListener(@NonNull RequestListener<Object> listener)
      Adds a global RequestListener that will be added to every request started with Glide.

      Multiple RequestListeners can be added here, in RequestManager scopes or to individual RequestBuilders. RequestListeners are called in the order they're added. Even if an earlier RequestListener returns true from RequestListener.onLoadFailed(GlideException, Object, Target, boolean) or RequestListener.onResourceReady(Object, Object, Target, DataSource, boolean), it will not prevent subsequent RequestListeners from being called.

      Because Glide requests can be started for any number of individual resource types, any listener added here has to accept any generic resource type in RequestListener.onResourceReady(Object, Object, Target, DataSource, boolean). If you must base the behavior of the listener on the resource type, you will need to use instanceof to do so. It's not safe to cast resource types without first checking with instanceof.

    • setLogRequestOrigins

      public GlideBuilder setLogRequestOrigins(boolean isEnabled)
      Set to true to make Glide populate GlideException.setOrigin(Exception) for failed requests.

      The exception set by this method is not printed by GlideException and can only be viewed via a RequestListener that reads the field via GlideException.getOrigin().

      This is an experimental API that may be removed in the future.

    • setImageDecoderEnabledForBitmaps

      public GlideBuilder setImageDecoderEnabledForBitmaps(boolean isEnabled)
      Set to true to make Glide use ImageDecoder when decoding Bitmaps on Android P and higher.

      Calls to this method on versions of Android less than Q are ignored. Although ImageDecoder was added in Android O a bug prevents it from scaling images with exif orientations until Q. See b/136096254.

      Specifically ImageDecoder will be used in place of Downsampler and BitmapFactory to decode Bitmaps. GIFs, resources, and all other types of Drawables are not affected by this flag.

      This flag is experimental and may be removed without deprecation in a future version.

      When this flag is enabled, Bitmap's will not be re-used when decoding images, though they may still be used as part of Transformations because ImageDecoder does not support Bitmap re-use.

      When this flag is enabled Downsampler.FIX_BITMAP_SIZE_TO_REQUESTED_DIMENSIONS is ignored. All other Downsampler flags are obeyed, although there may be subtle behavior differences because many options are subject to the whims of BitmapFactory and ImageDecoder which may not agree.

    • setDisableHardwareBitmapsOnO

      @Deprecated public GlideBuilder setDisableHardwareBitmapsOnO(boolean disableHardwareBitmapsOnO)
      Deprecated.
      This method does nothing. It will be hard coded and removed in a future release without further warning.