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

Commit 1585e672 authored by Jeremy Goldman's avatar Jeremy Goldman
Browse files

Close AirplaneModeEnabler once lifecycle classes are destroyed.

The AirplaneModeEnabler is a ContentObserver, and it must be closed when
the object containing it is deleted. Otherwise, it will continue to
exist and cause a memory leak.

Test: atest -c SettingsUnitTest
Bug: 177265744

Change-Id: Idd48b601be1133ee02010e23d8dcb394d1e29bd3
parent 5a8476a7
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -35,11 +35,12 @@ import com.android.settings.AirplaneModeEnabler;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnDestroy;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;

public class AirplaneModePreferenceController extends TogglePreferenceController
        implements LifecycleObserver, OnStart, OnStop,
        implements LifecycleObserver, OnStart, OnStop, OnDestroy,
        AirplaneModeEnabler.OnAirplaneModeChangedListener {

    public static final int REQUEST_CODE_EXIT_ECM = 1;
@@ -133,6 +134,12 @@ public class AirplaneModePreferenceController extends TogglePreferenceController
        }
    }

    @Override
    public void onDestroy() {
        mAirplaneModeEnabler.close();
    }


    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_CODE_EXIT_ECM) {
            final boolean isChoiceYes = data.getBooleanExtra(EXIT_ECM_RESULT, false);
+6 −0
Original line number Diff line number Diff line
@@ -459,6 +459,12 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
        super.onStop();
    }

    @Override
    public void onDestroy() {
        mAirplaneModeEnabler.close();
        super.onDestroy();
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);