summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Fabian Kozynski <kozynski@google.com> 2020-05-01 10:19:14 -0400
committer Fabian Kozynski <kozynski@google.com> 2020-05-01 10:19:14 -0400
commit9ebcda07be8962cb4fdb4e06d44535c68e2bcc0b (patch)
treeeda14dfd074823a7370cf254a389f6c4b5b629bb
parent8e47f58e6bbeaa3f3f75d88562e7849202beea51 (diff)
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
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java11
1 files 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();
}