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

Commit 9ebcda07 authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

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
parent 8e47f58e
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -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();
    }