-
Notifications
You must be signed in to change notification settings - Fork 6.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implement a new optional model interface Model. (#2353)
This allows models to handle equity for internal states that can be different from the target image result that is handled with equals()/hashCode() For example to allow restart of image download from a new source but still using the same cache in Glide.
- Loading branch information
Showing
4 changed files
with
44 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
28 changes: 28 additions & 0 deletions
28
library/src/main/java/com/bumptech/glide/load/model/Model.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
package com.bumptech.glide.load.model; | ||
|
||
/** | ||
* An optional interface that models can implement to enhance control over Glide behaviors. | ||
*/ | ||
public interface Model { | ||
|
||
/** | ||
* Returns {@code true} if this model produces the same image using the same mechanism | ||
* (server, authentication, source etc) as the given model. | ||
* <p> | ||
* Models must also implement {@link #equals(Object other)} and {@link #hashCode()} | ||
* to ensure that caching functions correctly. | ||
* If this object returns {@code true} from this method for a given Model, | ||
* it must also be equal to and have the same hash code as the given model. | ||
* <p> | ||
* However, this model may be equal to and have the same hash code as a given model | ||
* but still return {@code false} from this method. | ||
* This method optionally allows you to differentiate between Models that load the same image | ||
* via multiple different means. | ||
* For example one Model might load the image from server A and another model might load | ||
* the same image from server B. | ||
* The models must be equal to each other with the same hash code because they load | ||
* the same image. However two requests made with the different models are not exactly the | ||
* same because the way the image is loaded will differ. | ||
*/ | ||
boolean isEquivalentTo(Object other); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters