From 7c70d64d4c814e3d48b69aa4d9daf0717d71bff5 Mon Sep 17 00:00:00 2001 From: Michael Jurka Date: Wed, 23 Oct 2013 15:21:32 +0200 Subject: [PATCH] Prevent memory leaks coming from LauncherAnimUtils Use weak references for global animation list Bug: 11322014 Change-Id: I38bb9184e45840113129781fa83ab40ec96d3868 --- src/com/android/launcher3/LauncherAnimUtils.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/com/android/launcher3/LauncherAnimUtils.java b/src/com/android/launcher3/LauncherAnimUtils.java index 5d4f9c67e2..e6c220b2a2 100644 --- a/src/com/android/launcher3/LauncherAnimUtils.java +++ b/src/com/android/launcher3/LauncherAnimUtils.java @@ -25,12 +25,13 @@ import android.view.View; import android.view.ViewTreeObserver; import java.util.HashSet; +import java.util.WeakHashMap; public class LauncherAnimUtils { - static HashSet sAnimators = new HashSet(); + static WeakHashMap sAnimators = new WeakHashMap(); static Animator.AnimatorListener sEndAnimListener = new Animator.AnimatorListener() { public void onAnimationStart(Animator animation) { - sAnimators.add(animation); + sAnimators.put(animation, null); } public void onAnimationRepeat(Animator animation) { @@ -74,13 +75,12 @@ public class LauncherAnimUtils { } public static void onDestroyActivity() { - HashSet animators = new HashSet(sAnimators); + HashSet animators = new HashSet(sAnimators.keySet()); for (Animator a : animators) { if (a.isRunning()) { a.cancel(); - } else { - sAnimators.remove(a); } + sAnimators.remove(a); } }