From fab34160d2b3b5edcbe51d43b5901effc2323194 Mon Sep 17 00:00:00 2001 From: Evan Laird Date: Thu, 13 Jun 2019 16:29:20 -0400 Subject: [PATCH] Always remove IconState in onViewRemoved, even if animations are off Recent changes to avoid animating added a case where we can remove views but not remove the actual IconState for that view, causing a leak Fixes: 135180058 Test: heap dump? Change-Id: If3e3924348a606484ac0968f644b4895871bd406 --- .../statusbar/phone/NotificationIconContainer.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java index f458618a43f2a..e20a23edc66db 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java @@ -315,10 +315,11 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { @Override public void onViewRemoved(View child) { super.onViewRemoved(child); - if (mAnimationsEnabled && child instanceof StatusBarIconView) { + + if (child instanceof StatusBarIconView) { boolean isReplacingIcon = isReplacingIcon(child); final StatusBarIconView icon = (StatusBarIconView) child; - if (icon.getVisibleState() != StatusBarIconView.STATE_HIDDEN + if (mAnimationsEnabled && icon.getVisibleState() != StatusBarIconView.STATE_HIDDEN && child.getVisibility() == VISIBLE && isReplacingIcon) { int animationStartIndex = findFirstViewIndexAfter(icon.getTranslationX()); if (mAddAnimationStartIndex < 0) { @@ -329,7 +330,7 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { } if (!mChangingViewPositions) { mIconStates.remove(child); - if (!isReplacingIcon) { + if (mAnimationsEnabled && !isReplacingIcon) { addTransientView(icon, 0); boolean isIsolatedIcon = child == mIsolatedIcon; icon.setVisibleState(StatusBarIconView.STATE_HIDDEN, true /* animate */,