diff --git a/library/src/main/java/com/bumptech/glide/Glide.java b/library/src/main/java/com/bumptech/glide/Glide.java index 905c3a5eb0..f83786879e 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 @@ static void tearDown() { 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 static ModelLoader buildModelLoader(Class modelClass, Cla } 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 17a3f2803d..7bf36414ad 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 RequestManager(Context context, Lifecycle lifecycle) { 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 d8ebf616c6..63980d35cd 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 String toString() { } }; + 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 synchronized ModelLoaderFactory register(Class modelClass * {@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 The type of the model. * @param The type of the resource. */ + @Deprecated public synchronized ModelLoader buildModelLoader(Class modelClass, Class 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 The type of the model. + * @param The type of the resource. + */ + public synchronized ModelLoader buildModelLoader(Class modelClass, Class resourceClass) { ModelLoader 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 @@ private ModelLoaderFactory getFactory(Class modelClass, Class result = resourceToFactories.get(resourceClass); } - if (result == null) { for (Class 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 8959036950..80197d8ad8 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 public static class Factory implements ModelLoaderFactory { @Override public ModelLoader 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 b69db440cf..915b83ecda 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 static class Factory implements ModelLoaderFactory 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 23eead6608..7254abc7cf 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 { @Override public ModelLoader 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 84a90f56b0..e0cdaf569d 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 static class Factory implements ModelLoaderFactory 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 3042a896b1..9dae4619e1 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 implements StreamM public static class Factory implements ModelLoaderFactory { @Override public ModelLoader 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 a385d3cca5..625e0b6a2e 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 static class Factory implements ModelLoaderFactory @Override public ModelLoader 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 1f951ee49c..f66cadd171 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 implements Str public static class Factory implements ModelLoaderFactory { @Override public ModelLoader 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 3b15b2f7b8..156313b07c 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 static class Factory implements ModelLoaderFactory { @Override public ModelLoader 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 c8d352521a..7ba7aec86f 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 { public static class Factory implements ModelLoaderFactory { @Override public ModelLoader 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 423437cdc7..ed87c45aa7 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 @@ private void init( 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;