Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a455113a authored by Robert Snoeberger's avatar Robert Snoeberger
Browse files

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
parent f57fbbbe
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -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);
            }