wasabeef/glide-transformations

Transformation caching does not work correctly

Closed this issue · 1 comments

`public interface Transformation extends Key {

/**

  • Transforms the given resource and returns the transformed resource.
  • If the original resource object is not returned, the original resource will be

  • recycled and it's internal resources may be reused. This means it is not safe to rely on the
  • original resource or any internal state of the original resource in any new resource that is
  • created. Usually this shouldn't occur, but if absolutely necessary either the original resource
  • object can be returned with modified internal state, or the data in the original resource can
  • be copied into the transformed resource.
  • If a Transformation is updated, {@link #equals(Object)}, {@link #hashCode()}, and

  • {@link #updateDiskCacheKey(java.security.MessageDigest)} should all change. If you're using a
  • simple String key an easy way to do this is to append a version number to your key. Failing to
  • do so will mean users may see images loaded from cache that had the old version of the
  • Transformation applied. Changing the return values of those methods will ensure that the cache
  • key has changed and therefore that any cached resources will be re-generated using the updated
  • Transformation.
  • During development you may need to either using {@link

  • com.bumptech.glide.load.engine.DiskCacheStrategy#NONE} or make sure {@link
  • #updateDiskCacheKey(java.security.MessageDigest)} changes each time you make a change to the
  • Transformation. Otherwise the resource you request may be loaded from disk cache and your
  • Transformation may not be called.
  • @param context The Application context
  • @param resource The resource to transform.
  • @param outWidth The width of the view or target the resource will be displayed in, or {@link
  •              com.bumptech.glide.request.target.Target#SIZE_ORIGINAL} to indicate the
    
  •              original resource width.
    
  • @param outHeight The height of the view or target the resource will be displayed in, or {@link
  •              com.bumptech.glide.request.target.Target#SIZE_ORIGINAL} to indicate the
    
  •              original resource height.
    
  • @return The transformed resource.
    */
    Resource transform(Context context, Resource resource, int outWidth, int outHeight);

/**

  • For caching to work correctly, implementations must implement this method and
  • {@link #hashCode()}.
    */
    @OverRide
    boolean equals(Object o);

/**

  • For caching to work correctly, implementations must implement this method and
  • {@link #equals(Object)}.
    */
    @OverRide
    int hashCode();
    }`

For caching to work correctly, transformation must implement method equals(Object o) and hashCode(Object o);

thanks for #105 @CrabeMan