
com.bumptech.glide.provider.ModelToResourceClassCache Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of glide Show documentation
Show all versions of glide Show documentation
A fast and efficient image loading library for Android focused on smooth scrolling.
package com.bumptech.glide.provider;
import android.support.annotation.Nullable;
import android.support.v4.util.ArrayMap;
import com.bumptech.glide.util.MultiClassKey;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
/**
* Maintains a cache of Model + Resource class to a set of registered resource classes that are
* subclasses of the resource class that can be decoded from the model class.
*/
public class ModelToResourceClassCache {
private final AtomicReference resourceClassKeyRef = new AtomicReference<>();
private final ArrayMap>> registeredResourceClassCache =
new ArrayMap<>();
@Nullable
public List> get(Class> modelClass, Class> resourceClass) {
MultiClassKey key = resourceClassKeyRef.getAndSet(null);
if (key == null) {
key = new MultiClassKey(modelClass, resourceClass);
} else {
key.set(modelClass, resourceClass);
}
final List> result;
synchronized (registeredResourceClassCache) {
result = registeredResourceClassCache.get(key);
}
resourceClassKeyRef.set(key);
return result;
}
public void put(Class> modelClass, Class> resourceClass, List> resourceClasses) {
synchronized (registeredResourceClassCache) {
registeredResourceClassCache
.put(new MultiClassKey(modelClass, resourceClass), resourceClasses);
}
}
public void clear() {
synchronized (registeredResourceClassCache) {
registeredResourceClassCache.clear();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy