Transformation caching does not work correctly
Closed this issue · 1 comments
364089999 commented
`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);