diff --git a/library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/LruBitmapPool.java b/library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/LruBitmapPool.java index 892c49d251f96e895c089d7a3088fcd7e1703e07..c965d992c34908667f23e16dc70e7870c6a1247f 100644 --- a/library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/LruBitmapPool.java +++ b/library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/LruBitmapPool.java @@ -245,6 +245,7 @@ public class LruBitmapPool implements BitmapPool { return strategy; } + @TargetApi(Build.VERSION_CODES.O) private static Set getDefaultAllowedConfigs() { Set configs = new HashSet<>(); configs.addAll(Arrays.asList(Bitmap.Config.values())); diff --git a/library/src/main/java/com/bumptech/glide/load/engine/cache/MemorySizeCalculator.java b/library/src/main/java/com/bumptech/glide/load/engine/cache/MemorySizeCalculator.java index e7c9d0327f04160e300bd606c0e09422d1aac150..243e71dfde192bab2b21024327932f49a63b457a 100644 --- a/library/src/main/java/com/bumptech/glide/load/engine/cache/MemorySizeCalculator.java +++ b/library/src/main/java/com/bumptech/glide/load/engine/cache/MemorySizeCalculator.java @@ -28,7 +28,8 @@ public final class MemorySizeCalculator { int getHeightPixels(); } - private MemorySizeCalculator(MemorySizeCalculator.Builder builder) { + // Package private to avoid PMD warning. + MemorySizeCalculator(MemorySizeCalculator.Builder builder) { this.context = builder.context; arrayPoolSize = @@ -39,10 +40,9 @@ public final class MemorySizeCalculator { getMaxSize( builder.activityManager, builder.maxSizeMultiplier, builder.lowMemoryMaxSizeMultiplier); - int screenSize = - builder.screenDimensions.getWidthPixels() * - builder.screenDimensions.getHeightPixels() * - BYTES_PER_ARGB_8888_PIXEL; + int widthPixels = builder.screenDimensions.getWidthPixels(); + int heightPixels = builder.screenDimensions.getHeightPixels(); + int screenSize = widthPixels * heightPixels * BYTES_PER_ARGB_8888_PIXEL; int targetBitmapPoolSize = Math.round(screenSize * builder.bitmapPoolScreens); diff --git a/library/src/main/java/com/bumptech/glide/load/resource/bitmap/Downsampler.java b/library/src/main/java/com/bumptech/glide/load/resource/bitmap/Downsampler.java index 78ac6813cbdeb7ba417316c3bdf776360c3dc9b7..5749714c5ef4428a9ed8eb4e054b87b7333560ba 100644 --- a/library/src/main/java/com/bumptech/glide/load/resource/bitmap/Downsampler.java +++ b/library/src/main/java/com/bumptech/glide/load/resource/bitmap/Downsampler.java @@ -515,11 +515,16 @@ public final class Downsampler { + ", inBitmap: " + getInBitmapString(options), e); } + // Avoid short circuiting SDK checks. + @SuppressWarnings("PMD.CollapsibleIfStatements") + @TargetApi(Build.VERSION_CODES.O) private static void setInBitmap(BitmapFactory.Options options, BitmapPool bitmapPool, int width, int height) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O - && options.inPreferredConfig == Config.HARDWARE) { - return; + // Avoid short circuiting, it appears to break on some devices. + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + if (options.inPreferredConfig == Config.HARDWARE) { + return; + } } // BitmapFactory will clear out the Bitmap before writing to it, so getDirty is safe. options.inBitmap = bitmapPool.getDirty(width, height, options.inPreferredConfig); diff --git a/library/src/main/java/com/bumptech/glide/load/resource/bitmap/HardwareConfigState.java b/library/src/main/java/com/bumptech/glide/load/resource/bitmap/HardwareConfigState.java index 58a126cac06c513b9d1ddfe8a2734f57551e11e8..4c2cb59e82c042b65188e25f6a934600c45596de 100644 --- a/library/src/main/java/com/bumptech/glide/load/resource/bitmap/HardwareConfigState.java +++ b/library/src/main/java/com/bumptech/glide/load/resource/bitmap/HardwareConfigState.java @@ -1,5 +1,6 @@ package com.bumptech.glide.load.resource.bitmap; +import android.annotation.TargetApi; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Build; @@ -76,6 +77,7 @@ final class HardwareConfigState { // Singleton constructor. } + @TargetApi(Build.VERSION_CODES.O) boolean setHardwareConfigIfAllowed( int targetWidth, int targetHeight, BitmapFactory.Options optionsWithScaling) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {