| package com.bumptech.glide.load.engine; |
| |
| |
| /** |
| * A resource interface that wraps a particular type so that it can be pooled and reused. |
| * |
| * @param <Z> The type of resource wrapped by this class. |
| */ |
| public interface Resource<Z> { |
| |
| /** |
| * Returns an instance of the wrapped resource. |
| * <p> |
| * Note - This does not have to be the same instance of the wrapped resource class and in fact it is often |
| * appropriate to return a new instance for each call. For example, |
| * {@link android.graphics.drawable.Drawable Drawable}s should only be used by a single |
| * {@link android.view.View View} at a time so each call to this method for Resources that wrap |
| * {@link android.graphics.drawable.Drawable Drawable}s should always return a new |
| * {@link android.graphics.drawable.Drawable Drawable}. |
| * </p> |
| */ |
| Z get(); |
| |
| /** |
| * Returns the size in bytes of the wrapped resource to use to determine how much of the memory cache this resource |
| * uses. |
| */ |
| int getSize(); |
| |
| /** |
| * Cleans up and recycles internal resources. |
| * |
| * <p> |
| * It is only safe to call this method if there are no current resource consumers and if this method has not |
| * yet been called. Typically this occurs at one of two times: |
| * <ul> |
| * <li>During a resource load when the resource is transformed or transcoded before any consumer have |
| * ever had access to this resource</li> |
| * <li>After all consumers have released this resource and it has been evicted from the cache</li> |
| * </ul> |
| * |
| * For most users of this class, the only time this method should ever be called is during transformations or |
| * transcoders, the framework will call this method when all consumers have released this resource and it has |
| * been evicted from the cache. |
| * </p> |
| */ |
| void recycle(); |
| } |