builder.activityManager, builder.maxSizeMultiplier, builder.lowMemoryMaxSizeMultiplier); int widthPixels = builder.screenDimensions.getWidthPixels(); int heightPixels = builder.screenDimensions.getHeightPixels(); int screenSize = widthPixels * heightPixels * BYTES_PER_ARGB_8888_PIXEL;
MemorySizeCalculator getCalculator() { when(screenDimensions.getWidthPixels()).thenReturn(pixelSize); when(screenDimensions.getHeightPixels()).thenReturn(pixelSize); return new MemorySizeCalculator.Builder(RuntimeEnvironment.application) .setMemoryCacheScreens(memoryCacheScreens) .setBitmapPoolScreens(bitmapPoolScreens) .setMaxSizeMultiplier(sizeMultiplier) .setActivityManager(activityManager) .setScreenDimensions(screenDimensions) .setArrayPoolSize(byteArrayPoolSizeBytes) .build(); }
MemorySizeCalculator(Context context, ActivityManager activityManager, ScreenDimensions screenDimensions) { this.context = context; final int maxSize = getMaxSize(activityManager); final int screenSize = screenDimensions.getWidthPixels() * screenDimensions.getHeightPixels() * BYTES_PER_ARGB_8888_PIXEL; int targetPoolSize = screenSize * BITMAP_POOL_TARGET_SCREENS; int targetMemoryCacheSize = screenSize * MEMORY_CACHE_TARGET_SCREENS; if (targetMemoryCacheSize + targetPoolSize <= maxSize) { memoryCacheSize = targetMemoryCacheSize; bitmapPoolSize = targetPoolSize; } else { int part = Math.round((float) maxSize / (BITMAP_POOL_TARGET_SCREENS + MEMORY_CACHE_TARGET_SCREENS)); memoryCacheSize = part * MEMORY_CACHE_TARGET_SCREENS; bitmapPoolSize = part * BITMAP_POOL_TARGET_SCREENS; } if (Log.isLoggable(TAG, Log.DEBUG)) { Log.d(TAG, "Calculated memory cache size: " + toMb(memoryCacheSize) + " pool size: " + toMb(bitmapPoolSize) + " memory class limited? " + (targetMemoryCacheSize + targetPoolSize > maxSize) + " max size: " + toMb(maxSize) + " memoryClass: " + activityManager.getMemoryClass() + " isLowMemoryDevice: " + isLowMemoryDevice(activityManager)); } }
builder.activityManager, builder.maxSizeMultiplier, builder.lowMemoryMaxSizeMultiplier); int widthPixels = builder.screenDimensions.getWidthPixels(); int heightPixels = builder.screenDimensions.getHeightPixels(); int screenSize = widthPixels * heightPixels * BYTES_PER_ARGB_8888_PIXEL;