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