summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUday Kiran jandhyala <ukiran@codeaurora.org>2014-05-21 18:03:12 +0530
committeremancebo <emancebo@cyngn.com>2014-09-04 10:40:21 -0700
commitf5d86db5891316b713174b179759f1f749dcca14 (patch)
tree6f55c5fabab1f46c8f87b07c2e265246d7583af9
parent4f8d14a26ee1f1945149ac9a7051eb22d28751ae (diff)
downloadandroid_packages_apps_Gallery2-f5d86db5891316b713174b179759f1f749dcca14.tar.gz
android_packages_apps_Gallery2-f5d86db5891316b713174b179759f1f749dcca14.tar.bz2
android_packages_apps_Gallery2-f5d86db5891316b713174b179759f1f749dcca14.zip
Use WeakReferenes to reduce Bitmap memory footprint
Use HashMap<Integer, WeakReference<Drawable>> instead of just HashMap<Integer, Drawable> Without this, references are still being held for Bitmap drawables, thereby after few Photo edits, OutOfMemoryException is raised and Gallery crashes Conflicts: src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java Change-Id: If91f950986bd816d5571a0d51a7cb9522226e270
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java
index a7bd539fc..5f3502272 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java
@@ -26,6 +26,7 @@ import android.graphics.drawable.Drawable;
import com.android.gallery3d.data.DecodeUtils;
import java.util.HashMap;
+import java.lang.ref.WeakReference;
public class ImageFilterBorder extends ImageFilter {
private static final float NINEPATCH_ICON_SCALING = 10;
@@ -33,7 +34,7 @@ public class ImageFilterBorder extends ImageFilter {
private FilterImageBorderRepresentation mParameters = null;
private Resources mResources = null;
- private HashMap<Integer, Drawable> mDrawables = new HashMap<Integer, Drawable>();
+ private HashMap<Integer, WeakReference<Drawable>> mDrawables = new HashMap<Integer, WeakReference<Drawable>>();
public ImageFilterBorder() {
mName = "Border";
@@ -82,11 +83,11 @@ public class ImageFilterBorder extends ImageFilter {
}
public Drawable getDrawable(int rsc, int reqWidth, int reqHeight) {
- Drawable drawable = mDrawables.get(rsc);
+ Drawable drawable = (mDrawables.get(rsc) != null) ? mDrawables.get(rsc).get() : null;
if (drawable == null && mResources != null && rsc != 0) {
drawable = new BitmapDrawable(mResources, DecodeUtils.decodeBitmap(
mResources, rsc, reqWidth, reqHeight));
- mDrawables.put(rsc, drawable);
+ mDrawables.put(rsc, new WeakReference<Drawable>(drawable));
}
return drawable;
}