diff options
author | Sam Judd <judds@google.com> | 2014-10-22 13:29:34 -0700 |
---|---|---|
committer | Sam Judd <judds@google.com> | 2014-10-22 13:29:34 -0700 |
commit | 1c213bd9646c0292439767103060391121624ff9 (patch) | |
tree | eb145e7c9d8f03231e3b3b7b8ad5135029432172 /library/src/main/java/com | |
parent | 4fcb6cd5b3dbd7ecc58d3e3dcb7a3d8304e54a16 (diff) | |
download | glide-1c213bd9646c0292439767103060391121624ff9.tar.gz |
Use the application Context to build ModelLoaders.
Fixes #210
Diffstat (limited to 'library/src/main/java/com')
13 files changed, 38 insertions, 17 deletions
diff --git a/library/src/main/java/com/bumptech/glide/Glide.java b/library/src/main/java/com/bumptech/glide/Glide.java index 905c3a5e..f8378687 100644 --- a/library/src/main/java/com/bumptech/glide/Glide.java +++ b/library/src/main/java/com/bumptech/glide/Glide.java @@ -82,7 +82,7 @@ public class Glide { private static final String TAG = "Glide"; private static volatile Glide glide; - private final GenericLoaderFactory loaderFactory = new GenericLoaderFactory(); + private final GenericLoaderFactory loaderFactory; private final Engine engine; private final BitmapPool bitmapPool; private final MemoryCache memoryCache; @@ -188,6 +188,7 @@ public class Glide { this.bitmapPool = bitmapPool; this.memoryCache = memoryCache; this.decodeFormat = decodeFormat; + loaderFactory = new GenericLoaderFactory(context); mainHandler = new Handler(Looper.getMainLooper()); bitmapPreFiller = new BitmapPreFiller(memoryCache, bitmapPool); @@ -492,7 +493,7 @@ public class Glide { } return null; } - return Glide.get(context).getLoaderFactory().buildModelLoader(modelClass, resourceClass, context); + return Glide.get(context).getLoaderFactory().buildModelLoader(modelClass, resourceClass); } /** diff --git a/library/src/main/java/com/bumptech/glide/RequestManager.java b/library/src/main/java/com/bumptech/glide/RequestManager.java index 17a3f280..7bf36414 100644 --- a/library/src/main/java/com/bumptech/glide/RequestManager.java +++ b/library/src/main/java/com/bumptech/glide/RequestManager.java @@ -52,7 +52,7 @@ public class RequestManager implements LifecycleListener { RequestManager(Context context, final Lifecycle lifecycle, RequestTracker requestTracker, ConnectivityMonitorFactory factory) { - this.context = context; + this.context = context.getApplicationContext(); this.lifecycle = lifecycle; this.requestTracker = requestTracker; this.glide = Glide.get(context); diff --git a/library/src/main/java/com/bumptech/glide/load/model/GenericLoaderFactory.java b/library/src/main/java/com/bumptech/glide/load/model/GenericLoaderFactory.java index d8ebf616..63980d35 100644 --- a/library/src/main/java/com/bumptech/glide/load/model/GenericLoaderFactory.java +++ b/library/src/main/java/com/bumptech/glide/load/model/GenericLoaderFactory.java @@ -30,6 +30,12 @@ public class GenericLoaderFactory { } }; + private final Context context; + + public GenericLoaderFactory(Context context) { + this.context = context.getApplicationContext(); + } + /** * Removes and returns the registered {@link ModelLoaderFactory} for the given model and resource classes. Returns * null if no such factory is registered. Clears all cached model loaders. @@ -92,13 +98,30 @@ public class GenericLoaderFactory { * {@link ModelLoader} or building a new a new {@link ModelLoader} using registered {@link ModelLoaderFactory}s. * Returns null if no {@link ModelLoaderFactory} is registered for the given classes. * + * @deprecated Use {@link #buildModelLoader(Class, Class)} instead. * @param modelClass The model class. * @param resourceClass The resource class. + * @param context Unused * @param <T> The type of the model. * @param <Y> The type of the resource. */ + @Deprecated public synchronized <T, Y> ModelLoader<T, Y> buildModelLoader(Class<T> modelClass, Class<Y> resourceClass, - Context context) { + Context context) { + return buildModelLoader(modelClass, resourceClass); + } + + /** + * Returns a {@link ModelLoader} for the given model and resource classes by either returning a cached + * {@link ModelLoader} or building a new a new {@link ModelLoader} using registered {@link ModelLoaderFactory}s. + * Returns null if no {@link ModelLoaderFactory} is registered for the given classes. + * + * @param modelClass The model class. + * @param resourceClass The resource class. + * @param <T> The type of the model. + * @param <Y> The type of the resource. + */ + public synchronized <T, Y> ModelLoader<T, Y> buildModelLoader(Class<T> modelClass, Class<Y> resourceClass) { ModelLoader<T, Y> result = getCachedLoader(modelClass, resourceClass); if (result != null) { // We've already tried to create a model loader and can't with the currently registered set of factories, @@ -152,7 +175,6 @@ public class GenericLoaderFactory { result = resourceToFactories.get(resourceClass); } - if (result == null) { for (Class<? super T> registeredModelClass : modelClassToResourceFactories.keySet()) { // This accounts for model subclasses, our map only works for exact matches. We should however still diff --git a/library/src/main/java/com/bumptech/glide/load/model/file_descriptor/FileDescriptorFileLoader.java b/library/src/main/java/com/bumptech/glide/load/model/file_descriptor/FileDescriptorFileLoader.java index 89590369..80197d8a 100644 --- a/library/src/main/java/com/bumptech/glide/load/model/file_descriptor/FileDescriptorFileLoader.java +++ b/library/src/main/java/com/bumptech/glide/load/model/file_descriptor/FileDescriptorFileLoader.java @@ -24,8 +24,7 @@ public class FileDescriptorFileLoader extends FileLoader<ParcelFileDescriptor> public static class Factory implements ModelLoaderFactory<File, ParcelFileDescriptor> { @Override public ModelLoader<File, ParcelFileDescriptor> build(Context context, GenericLoaderFactory factories) { - return new FileDescriptorFileLoader(factories.buildModelLoader(Uri.class, ParcelFileDescriptor.class, - context)); + return new FileDescriptorFileLoader(factories.buildModelLoader(Uri.class, ParcelFileDescriptor.class)); } @Override diff --git a/library/src/main/java/com/bumptech/glide/load/model/file_descriptor/FileDescriptorResourceLoader.java b/library/src/main/java/com/bumptech/glide/load/model/file_descriptor/FileDescriptorResourceLoader.java index b69db440..915b83ec 100644 --- a/library/src/main/java/com/bumptech/glide/load/model/file_descriptor/FileDescriptorResourceLoader.java +++ b/library/src/main/java/com/bumptech/glide/load/model/file_descriptor/FileDescriptorResourceLoader.java @@ -23,7 +23,7 @@ public class FileDescriptorResourceLoader extends ResourceLoader<ParcelFileDescr @Override public ModelLoader<Integer, ParcelFileDescriptor> build(Context context, GenericLoaderFactory factories) { return new FileDescriptorResourceLoader(context, factories.buildModelLoader(Uri.class, - ParcelFileDescriptor.class, context)); + ParcelFileDescriptor.class)); } @Override diff --git a/library/src/main/java/com/bumptech/glide/load/model/file_descriptor/FileDescriptorStringLoader.java b/library/src/main/java/com/bumptech/glide/load/model/file_descriptor/FileDescriptorStringLoader.java index 23eead66..7254abc7 100644 --- a/library/src/main/java/com/bumptech/glide/load/model/file_descriptor/FileDescriptorStringLoader.java +++ b/library/src/main/java/com/bumptech/glide/load/model/file_descriptor/FileDescriptorStringLoader.java @@ -22,8 +22,7 @@ public class FileDescriptorStringLoader extends StringLoader<ParcelFileDescripto public static class Factory implements ModelLoaderFactory<String, ParcelFileDescriptor> { @Override public ModelLoader<String, ParcelFileDescriptor> build(Context context, GenericLoaderFactory factories) { - return new FileDescriptorStringLoader(factories.buildModelLoader(Uri.class, ParcelFileDescriptor.class, - context)); + return new FileDescriptorStringLoader(factories.buildModelLoader(Uri.class, ParcelFileDescriptor.class)); } @Override diff --git a/library/src/main/java/com/bumptech/glide/load/model/file_descriptor/FileDescriptorUriLoader.java b/library/src/main/java/com/bumptech/glide/load/model/file_descriptor/FileDescriptorUriLoader.java index 84a90f56..e0cdaf56 100644 --- a/library/src/main/java/com/bumptech/glide/load/model/file_descriptor/FileDescriptorUriLoader.java +++ b/library/src/main/java/com/bumptech/glide/load/model/file_descriptor/FileDescriptorUriLoader.java @@ -25,7 +25,7 @@ public class FileDescriptorUriLoader extends UriLoader<ParcelFileDescriptor> imp @Override public ModelLoader<Uri, ParcelFileDescriptor> build(Context context, GenericLoaderFactory factories) { return new FileDescriptorUriLoader(context, factories.buildModelLoader(GlideUrl.class, - ParcelFileDescriptor.class, context)); + ParcelFileDescriptor.class)); } @Override diff --git a/library/src/main/java/com/bumptech/glide/load/model/stream/StreamFileLoader.java b/library/src/main/java/com/bumptech/glide/load/model/stream/StreamFileLoader.java index 3042a896..9dae4619 100644 --- a/library/src/main/java/com/bumptech/glide/load/model/stream/StreamFileLoader.java +++ b/library/src/main/java/com/bumptech/glide/load/model/stream/StreamFileLoader.java @@ -22,7 +22,7 @@ public class StreamFileLoader extends FileLoader<InputStream> implements StreamM public static class Factory implements ModelLoaderFactory<File, InputStream> { @Override public ModelLoader<File, InputStream> build(Context context, GenericLoaderFactory factories) { - return new StreamFileLoader(factories.buildModelLoader(Uri.class, InputStream.class, context)); + return new StreamFileLoader(factories.buildModelLoader(Uri.class, InputStream.class)); } @Override diff --git a/library/src/main/java/com/bumptech/glide/load/model/stream/StreamResourceLoader.java b/library/src/main/java/com/bumptech/glide/load/model/stream/StreamResourceLoader.java index a385d3cc..625e0b6a 100644 --- a/library/src/main/java/com/bumptech/glide/load/model/stream/StreamResourceLoader.java +++ b/library/src/main/java/com/bumptech/glide/load/model/stream/StreamResourceLoader.java @@ -22,7 +22,7 @@ public class StreamResourceLoader extends ResourceLoader<InputStream> implements @Override public ModelLoader<Integer, InputStream> build(Context context, GenericLoaderFactory factories) { - return new StreamResourceLoader(context, factories.buildModelLoader(Uri.class, InputStream.class, context)); + return new StreamResourceLoader(context, factories.buildModelLoader(Uri.class, InputStream.class)); } @Override diff --git a/library/src/main/java/com/bumptech/glide/load/model/stream/StreamStringLoader.java b/library/src/main/java/com/bumptech/glide/load/model/stream/StreamStringLoader.java index 1f951ee4..f66cadd1 100644 --- a/library/src/main/java/com/bumptech/glide/load/model/stream/StreamStringLoader.java +++ b/library/src/main/java/com/bumptech/glide/load/model/stream/StreamStringLoader.java @@ -22,7 +22,7 @@ public class StreamStringLoader extends StringLoader<InputStream> implements Str public static class Factory implements ModelLoaderFactory<String, InputStream> { @Override public ModelLoader<String, InputStream> build(Context context, GenericLoaderFactory factories) { - return new StreamStringLoader(factories.buildModelLoader(Uri.class, InputStream.class, context)); + return new StreamStringLoader(factories.buildModelLoader(Uri.class, InputStream.class)); } @Override diff --git a/library/src/main/java/com/bumptech/glide/load/model/stream/StreamUriLoader.java b/library/src/main/java/com/bumptech/glide/load/model/stream/StreamUriLoader.java index 3b15b2f7..156313b0 100644 --- a/library/src/main/java/com/bumptech/glide/load/model/stream/StreamUriLoader.java +++ b/library/src/main/java/com/bumptech/glide/load/model/stream/StreamUriLoader.java @@ -28,7 +28,7 @@ public class StreamUriLoader extends UriLoader<InputStream> implements StreamMod @Override public ModelLoader<Uri, InputStream> build(Context context, GenericLoaderFactory factories) { - return new StreamUriLoader(context, factories.buildModelLoader(GlideUrl.class, InputStream.class, context)); + return new StreamUriLoader(context, factories.buildModelLoader(GlideUrl.class, InputStream.class)); } @Override diff --git a/library/src/main/java/com/bumptech/glide/load/model/stream/StreamUrlLoader.java b/library/src/main/java/com/bumptech/glide/load/model/stream/StreamUrlLoader.java index c8d35252..7ba7aec8 100644 --- a/library/src/main/java/com/bumptech/glide/load/model/stream/StreamUrlLoader.java +++ b/library/src/main/java/com/bumptech/glide/load/model/stream/StreamUrlLoader.java @@ -23,7 +23,7 @@ public class StreamUrlLoader extends UrlLoader<InputStream> { public static class Factory implements ModelLoaderFactory<URL, InputStream> { @Override public ModelLoader<URL, InputStream> build(Context context, GenericLoaderFactory factories) { - return new StreamUrlLoader(factories.buildModelLoader(GlideUrl.class, InputStream.class, context)); + return new StreamUrlLoader(factories.buildModelLoader(GlideUrl.class, InputStream.class)); } @Override diff --git a/library/src/main/java/com/bumptech/glide/request/GenericRequest.java b/library/src/main/java/com/bumptech/glide/request/GenericRequest.java index 423437cd..ed87c45a 100644 --- a/library/src/main/java/com/bumptech/glide/request/GenericRequest.java +++ b/library/src/main/java/com/bumptech/glide/request/GenericRequest.java @@ -181,7 +181,7 @@ public final class GenericRequest<A, T, Z, R> implements Request, SizeReadyCallb this.loadProvider = loadProvider; this.model = model; this.signature = signature; - this.context = context; + this.context = context.getApplicationContext(); this.priority = priority; this.target = target; this.sizeMultiplier = sizeMultiplier; |