Prevent NotificationIconContainer$3 from retaining NotificationEntry
It has been observed in heap dumps that NotificationIconContainer$3 can retain a NotificationEntry after the entry has been dismissed. To prevent this, this change breaks the reference chain between NotificationIconConatiner$3 and the IconState for the status bar icon. The cut is performed by setting the animation end action to null after the animation is started. Fixes: 160588607 Bug: 161119435 Test: manual - Clear all notifications. Take heap dump. Verify that weakref in AnimationEndAction has been collected (ie. is null). Change-Id: I32184a30df89a5172876a43da4896a2e06e3c86c
This commit is contained in:
@@ -19,8 +19,6 @@ package com.android.systemui.statusbar.phone;
|
||||
import static com.android.systemui.statusbar.phone.HeadsUpAppearanceController.CONTENT_FADE_DELAY;
|
||||
import static com.android.systemui.statusbar.phone.HeadsUpAppearanceController.CONTENT_FADE_DURATION;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.graphics.Canvas;
|
||||
@@ -807,6 +805,7 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout {
|
||||
} else {
|
||||
super.applyToView(view);
|
||||
}
|
||||
sTempProperties.setAnimationEndAction(null);
|
||||
boolean inShelf = iconAppearAmount == 1.0f;
|
||||
icon.setIsInShelf(inShelf);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user