Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f680f52 authored by Adam Koch's avatar Adam Koch
Browse files

Displaying Bitmaps Efficiently Training - Change memory calculation

When calculating memory cache size, use Runtime.maxMemory() instead
of getMemoryClass() which is a more accurate value of available VM
heap size.

Bug: 7988323
Change-Id: Iaa9681a11aad5cad3857dfe76f0b8e4811b2243c
parent 0bb4dade
Loading
Loading
Loading
Loading
+29 B (420 KiB)

File changed.

No diff preview for this file type.

+8 −7
Original line number Diff line number Diff line
@@ -101,19 +101,20 @@ private LruCache<String, Bitmap> mMemoryCache;
@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    // Get memory class of this device, exceeding this amount will throw an
    // OutOfMemory exception.
    final int memClass = ((ActivityManager) context.getSystemService(
            Context.ACTIVITY_SERVICE)).getMemoryClass();
    // Get max available VM memory, exceeding this amount will throw an
    // OutOfMemory exception. Stored in kilobytes as LruCache takes an
    // int in its constructor.
    final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);

    // Use 1/8th of the available memory for this memory cache.
    final int cacheSize = 1024 * 1024 * memClass / 8;
    final int cacheSize = maxMemory / 8;

    mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {
        @Override
        protected int sizeOf(String key, Bitmap bitmap) {
            // The cache size will be measured in bytes rather than number of items.
            return bitmap.getByteCount();
            // The cache size will be measured in kilobytes rather than
            // number of items.
            return bitmap.getByteCount() / 1024;
        }
    };
    ...