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

Commit bf477db8 authored by andrew.gong's avatar andrew.gong
Browse files

Settings observer fail to unregister.

Zen mode change will call displayPreference() and create a new SettingsObserver, then the old Observer object will have no opportunity to be unregistered. After too much new SettingsObserver creatd in Monkey test, memory might leak.

Bug 176206489

Change-Id: I3bccec281da492299bbf755f86df7844a31223c5
parent a2e406ed
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -84,7 +84,10 @@ abstract public class AbstractZenModePreferenceController extends
        mScreen = screen;
        Preference pref = screen.findPreference(KEY);
        if (pref != null) {
            mSettingObserver = new SettingObserver(pref);
            if (mSettingObserver == null) {
                mSettingObserver = new SettingObserver();
            }
            mSettingObserver.setPreference(pref);
        }
    }

@@ -128,10 +131,13 @@ abstract public class AbstractZenModePreferenceController extends
        private final Uri ZEN_MODE_DURATION_URI = Settings.Secure.getUriFor(
                Settings.Secure.ZEN_DURATION);

        private final Preference mPreference;
        private Preference mPreference;

        public SettingObserver(Preference preference) {
        public SettingObserver() {
            super(new Handler());
        }

        public void setPreference(Preference preference) {
            mPreference = preference;
        }