19fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddpackage com.bumptech.glide.load.model;
29c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd
39c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Juddimport android.content.Context;
49c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd
59c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd/**
69c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd * An interface for creating a {@link ModelLoader} for a given model type. Will be retained statically so should not
79c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd * retain {@link Context} or any other objects that cannot be retained for the life of the application. ModelLoaders
89c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd * will not be retained statically so it is safe for any ModelLoader built by this factory to retain a reference to a
99c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd * {@link Context}.
109c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd */
110ae32dc10d668a04f9f0484d587aefe5a7210e1cSam Juddpublic interface ModelLoaderFactory<T, Y> {
128e2641581399c6b767a1f5210689da8cc6fed6baSam Judd
139c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd    /**
149c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd     * Build a concrete ModelLoader for this model type.
159c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd     *
169c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd     * @param context A context that cannot be retained by the factory but can be retained by the {@link ModelLoader}
179c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd     * @param factories A map of classes to factories that can be used to construct additional {@link ModelLoader}s that
189c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd     *                  this factory's {@link ModelLoader} may depend on
199c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd     * @return A new {@link ModelLoader}
209c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd     */
210ae32dc10d668a04f9f0484d587aefe5a7210e1cSam Judd    public ModelLoader<T, Y> build(Context context, GenericLoaderFactory factories);
229c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd
239c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd    /**
249c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd     * A lifecycle method that will be called when this factory is about to replaced
259c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd     */
269c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd    public void teardown();
279c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd}
28