From 405d1dce546bcb3cbf117239695b8ce6fd7a8867 Mon Sep 17 00:00:00 2001 From: Johan Pelgrim Date: Sat, 6 Mar 2021 20:45:51 +0100 Subject: [PATCH] Always call destroy on local render script object StrictMode reports that the local rs object leaks memory if it does not call destroy on the local reference. Always calling destroy() explicitly (when not null) fixes this memory leak. E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks. java.lang.Throwable: Explicit termination method 'destroy' not called at dalvik.system.CloseGuard.open(CloseGuard.java:180) at android.renderscript.Element.(Element.java:1094) at android.renderscript.Element.createPixel(Element.java:1265) at android.renderscript.Element.RGBA_8888(Element.java:639) at android.renderscript.Allocation.elementFromBitmap(Allocation.java:2762) at android.renderscript.Allocation.typeFromBitmap(Allocation.java:2772) at android.renderscript.Allocation.createFromBitmap(Allocation.java:2811) at jp.wasabeef.glide.transformations.internal.RSBlur.blur(RSBlur.java:39) at jp.wasabeef.glide.transformations.BlurTransformation.transform(BlurTransformation.java:79) at jp.wasabeef.glide.transformations.BitmapTransformation.transform(BitmapTransformation.java:50) --- .../jp/wasabeef/glide/transformations/internal/RSBlur.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/internal/RSBlur.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/internal/RSBlur.java index a2827dc..d379d2d 100644 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/internal/RSBlur.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/internal/RSBlur.java @@ -47,11 +47,7 @@ public static Bitmap blur(Context context, Bitmap bitmap, int radius) throws RSR output.copyTo(bitmap); } finally { if (rs != null) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - RenderScript.releaseAllContexts(); - } else { - rs.destroy(); - } + rs.destroy(); } if (input != null) { input.destroy();