diff options
author | Michael Jurka <mikejurka@google.com> | 2013-10-23 15:21:32 +0200 |
---|---|---|
committer | Michael Jurka <mikejurka@google.com> | 2013-10-23 15:22:17 +0200 |
commit | 7c70d64d4c814e3d48b69aa4d9daf0717d71bff5 (patch) | |
tree | 658bc8e29b6fa338d40550d948c591c0ab11f78a /src/com/android | |
parent | 00a4093fa6071679b3a0430137a2eff458ae3fa9 (diff) | |
download | android_packages_apps_Trebuchet-7c70d64d4c814e3d48b69aa4d9daf0717d71bff5.tar.gz android_packages_apps_Trebuchet-7c70d64d4c814e3d48b69aa4d9daf0717d71bff5.tar.bz2 android_packages_apps_Trebuchet-7c70d64d4c814e3d48b69aa4d9daf0717d71bff5.zip |
Prevent memory leaks coming from LauncherAnimUtils
Use weak references for global animation list
Bug: 11322014
Change-Id: I38bb9184e45840113129781fa83ab40ec96d3868
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/launcher3/LauncherAnimUtils.java | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/com/android/launcher3/LauncherAnimUtils.java b/src/com/android/launcher3/LauncherAnimUtils.java index 5d4f9c67e..e6c220b2a 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<Animator> sAnimators = new HashSet<Animator>(); + static WeakHashMap<Animator, Object> sAnimators = new WeakHashMap<Animator, Object>(); 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<Animator> animators = new HashSet<Animator>(sAnimators); + HashSet<Animator> animators = new HashSet<Animator>(sAnimators.keySet()); for (Animator a : animators) { if (a.isRunning()) { a.cancel(); - } else { - sAnimators.remove(a); } + sAnimators.remove(a); } } |