From 9ebcda07be8962cb4fdb4e06d44535c68e2bcc0b Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Fri, 1 May 2020 10:19:14 -0400 Subject: Remove observer when QSBH is detached When QuickStatusBarHeader is detached (for example, when QSFragment is destroyed) remove the LiveData observer. Test: ahat, after dark mode (triggers re-inflate), there's only one QSBH observer Fixes: 155425341 Change-Id: Ic92367ea786228dfefb9808d9cad7d73197b4967 --- .../src/com/android/systemui/qs/QuickStatusBarHeader.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java index 90dc38f3ad12..b15c6a3e3b59 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java @@ -138,6 +138,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements private Clock mClockView; private DateView mDateView; private BatteryMeterView mBatteryRemainingIcon; + private RingerModeTracker mRingerModeTracker; // Used for RingerModeTracker private final LifecycleRegistry mLifecycle = new LifecycleRegistry(this); @@ -159,10 +160,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements mDualToneHandler = new DualToneHandler( new ContextThemeWrapper(context, R.style.QSHeaderTheme)); mCommandQueue = commandQueue; - ringerModeTracker.getRingerModeInternal().observe(this, ringer -> { - mRingerMode = ringer; - updateStatusText(); - }); + mRingerModeTracker = ringerModeTracker; } @Override @@ -429,6 +427,10 @@ public class QuickStatusBarHeader extends RelativeLayout implements @Override public void onAttachedToWindow() { super.onAttachedToWindow(); + mRingerModeTracker.getRingerModeInternal().observe(this, ringer -> { + mRingerMode = ringer; + updateStatusText(); + }); mStatusBarIconController.addIconGroup(mIconManager); requestApplyInsets(); } @@ -466,6 +468,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements @VisibleForTesting public void onDetachedFromWindow() { setListening(false); + mRingerModeTracker.getRingerModeInternal().removeObservers(this); mStatusBarIconController.removeIconGroup(mIconManager); super.onDetachedFromWindow(); } -- cgit v1.2.3-59-g8ed1b