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
This commit is contained in:
@@ -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);
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user