From 260f91e291f29f8bf8ad637b19a6d7c5f0deeb2b Mon Sep 17 00:00:00 2001 From: "A.Akira" Date: Wed, 25 Nov 2015 17:09:05 +0900 Subject: [PATCH] Use WeakReference. --- .../glide/transformations/BlurTransformation.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/BlurTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/BlurTransformation.java index 053d9b8..b5dff4f 100644 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/BlurTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/BlurTransformation.java @@ -29,13 +29,14 @@ import com.bumptech.glide.load.Transformation; import com.bumptech.glide.load.engine.Resource; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.bumptech.glide.load.resource.bitmap.BitmapResource; +import java.lang.ref.WeakReference; public class BlurTransformation implements Transformation { private static int MAX_RADIUS = 25; private static int DEFAULT_DOWN_SAMPLING = 1; - private Context mContext; + private WeakReference mContext; private BitmapPool mBitmapPool; private int mRadius; @@ -58,14 +59,14 @@ public class BlurTransformation implements Transformation { } public BlurTransformation(Context context, BitmapPool pool, int radius, int sampling) { - mContext = context; + mContext = new WeakReference<>(context); mBitmapPool = pool; mRadius = radius; mSampling = sampling; } public BlurTransformation(Context context, int radius, int sampling) { - mContext = context; + mContext = new WeakReference<>(context); mBitmapPool = Glide.get(context).getBitmapPool(); mRadius = radius; mSampling = sampling; @@ -91,7 +92,7 @@ public class BlurTransformation implements Transformation { paint.setFlags(Paint.FILTER_BITMAP_FLAG); canvas.drawBitmap(source, 0, 0, paint); - RenderScript rs = RenderScript.create(mContext); + RenderScript rs = RenderScript.create(mContext.get()); Allocation input = Allocation.createFromBitmap(rs, bitmap, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT); Allocation output = Allocation.createTyped(rs, input.getType()); @@ -102,6 +103,8 @@ public class BlurTransformation implements Transformation { blur.forEach(output); output.copyTo(bitmap); + source.recycle(); + resource.recycle(); rs.destroy(); return BitmapResource.obtain(bitmap, mBitmapPool);