Interface BitmapPool

All Known Implementing Classes:
BitmapPoolAdapter, LruBitmapPool

public interface BitmapPool
An interface for a pool that allows users to reuse Bitmap objects.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Removes all Bitmaps from the pool.
    get(int width, int height, Bitmap.Config config)
    Returns a Bitmap of exactly the given width, height, and configuration, and containing only transparent pixels.
    getDirty(int width, int height, Bitmap.Config config)
    Identical to get(int, int, android.graphics.Bitmap.Config) except that any returned Bitmap may not have been erased and may contain random data.
    long
    Returns the current maximum size of the pool in bytes.
    void
    put(Bitmap bitmap)
    Adds the given Bitmap if it is eligible to be re-used and the pool can fit it, or calls Bitmap.recycle() on the Bitmap and discards it.
    void
    setSizeMultiplier(float sizeMultiplier)
    Multiplies the initial size of the pool by the given multiplier 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.
  • Method Details

    • getMaxSize

      long getMaxSize()
      Returns the current maximum size of the pool in bytes.
    • setSizeMultiplier

      void setSizeMultiplier(float sizeMultiplier)
      Multiplies the initial size of the pool by the given multiplier to dynamically and synchronously allow users to adjust the size of the pool.

      If the current total size of the pool is larger than the max size after the given multiplier is applied, Bitmaps should be evicted until the pool is smaller than the new max size.

      Parameters:
      sizeMultiplier - The size multiplier to apply between 0 and 1.
    • put

      void put(Bitmap bitmap)
      Adds the given Bitmap if it is eligible to be re-used and the pool can fit it, or calls Bitmap.recycle() on the Bitmap and discards it.

      Callers must not continue to use the Bitmap after calling this method.

      Parameters:
      bitmap - The Bitmap to attempt to add.
      See Also:
    • get

      @NonNull Bitmap get(int width, int height, Bitmap.Config config)
      Returns a Bitmap of exactly the given width, height, and configuration, and containing only transparent pixels.

      If no Bitmap with the requested attributes is present in the pool, a new one will be allocated.

      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);
       
       
      Parameters:
      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.
      See Also:
    • getDirty

      @NonNull Bitmap getDirty(int width, int height, Bitmap.Config config)
      Identical to get(int, int, android.graphics.Bitmap.Config) except that any returned Bitmap may not have been erased and may contain random data.

      If no Bitmap with the requested attributes is present in the pool, a new one will be allocated.

      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.

      Parameters:
      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.
      Returns:
      A Bitmap with exactly the given width, height, and config potentially containing random image data.
      See Also:
    • clearMemory

      void clearMemory()
      Removes all Bitmaps from the pool.
    • trimMemory

      void trimMemory(int level)
      Reduces the size of the cache by evicting items based on the given level.
      Parameters:
      level - The level from ComponentCallbacks2 to use to determine how many Bitmaps to evict.
      See Also: