public interface BitmapPool
Bitmap
objects.Modifier and Type | Method and Description |
---|---|
void |
clearMemory()
Removes all
Bitmap s from the pool. |
Bitmap |
get(int width,
int height,
Bitmap.Config config)
|
Bitmap |
getDirty(int width,
int height,
Bitmap.Config config)
Identical to
get(int, int, android.graphics.Bitmap.Config) except that any returned non-null
Bitmap may not have been erased and may contain random data. |
int |
getMaxSize()
Returns the current maximum size of the pool in bytes.
|
boolean |
put(Bitmap bitmap)
|
void |
setSizeMultiplier(float sizeMultiplier)
Multiplies the initial size of the pool by the given multipler to dynamically and synchronously allow users to
adjust the size of the pool.
|
void |
trimMemory(int level)
Reduces the size of the cache by evicting items based on the given level.
|
int getMaxSize()
void setSizeMultiplier(float sizeMultiplier)
If the current total size of the pool is larger than the max size after the given multiplier is applied,
Bitmap
s should be evicted until the pool is smaller than the new max size.
sizeMultiplier
- The size multiplier to apply between 0 and 1.boolean put(Bitmap bitmap)
Bitmap
and returns true
if the Bitmap
was eligible to be added and false
otherwise.
Note - If the Bitmap
is rejected (this method returns false) then it is the caller's
responsibility to call Bitmap.recycle()
.
Note - This method will return true
if the given Bitmap
is synchronously
evicted after being accepted. The only time this method will return false
is if the
Bitmap
is not eligible to be added to the pool (either it is not mutable or it is
larger than the max pool size).
bitmap
- The Bitmap
to attempt to add.Bitmap.isMutable()
,
Bitmap.recycle()
Bitmap get(int width, int height, Bitmap.Config config)
Bitmap
of exactly the given width, height, and configuration, and containing
only transparent pixels or null if no such Bitmap
could be obtained from the pool.
Because this method erases all pixels in the Bitmap
, this method is slightly slower than
getDirty(int, int, android.graphics.Bitmap.Config)
. If the Bitmap
is being
obtained to be used in BitmapFactory
or in any other case where every pixel in the
Bitmap
will always be overwritten or cleared,
getDirty(int, int, android.graphics.Bitmap.Config)
will be faster. When in doubt, use this method
to ensure correctness.
Implementations can should clear out every returned Bitmap using the following:
bitmap.eraseColor(Color.TRANSPARENT);
width
- The width in pixels of the desired Bitmap
.height
- The height in pixels of the desired Bitmap
.config
- The Bitmap.Config
of the desired Bitmap
.getDirty(int, int, android.graphics.Bitmap.Config)
Bitmap getDirty(int width, int height, Bitmap.Config config)
get(int, int, android.graphics.Bitmap.Config)
except that any returned non-null
Bitmap
may not have been erased and may contain random data.
Although this method is slightly more efficient than get(int, int, android.graphics.Bitmap.Config)
it should be used with caution and only when the caller is sure that they are going to erase the
Bitmap
entirely before writing new data to it.
width
- The width in pixels of the desired Bitmap
.height
- The height in pixels of the desired Bitmap
.config
- The Bitmap.Config
of the desired Bitmap
.Bitmap
with exactly the given width, height, and config potentially containing
random image data or null if no such Bitmap
could be obtained from the pool.get(int, int, android.graphics.Bitmap.Config)
void clearMemory()
Bitmap
s from the pool.void trimMemory(int level)
level
- The level from ComponentCallbacks2
to use to determine how many
Bitmap
s to evict.ComponentCallbacks2