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.R;
|
||||||
import com.android.settings.core.TogglePreferenceController;
|
import com.android.settings.core.TogglePreferenceController;
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
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.OnStart;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnStop;
|
import com.android.settingslib.core.lifecycle.events.OnStop;
|
||||||
|
|
||||||
public class AirplaneModePreferenceController extends TogglePreferenceController
|
public class AirplaneModePreferenceController extends TogglePreferenceController
|
||||||
implements LifecycleObserver, OnStart, OnStop,
|
implements LifecycleObserver, OnStart, OnStop, OnDestroy,
|
||||||
AirplaneModeEnabler.OnAirplaneModeChangedListener {
|
AirplaneModeEnabler.OnAirplaneModeChangedListener {
|
||||||
|
|
||||||
public static final int REQUEST_CODE_EXIT_ECM = 1;
|
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) {
|
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
if (requestCode == REQUEST_CODE_EXIT_ECM) {
|
if (requestCode == REQUEST_CODE_EXIT_ECM) {
|
||||||
final boolean isChoiceYes = data.getBooleanExtra(EXIT_ECM_RESULT, false);
|
final boolean isChoiceYes = data.getBooleanExtra(EXIT_ECM_RESULT, false);
|
||||||
|
@@ -459,6 +459,12 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
super.onStop();
|
super.onStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroy() {
|
||||||
|
mAirplaneModeEnabler.close();
|
||||||
|
super.onDestroy();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
|
Reference in New Issue
Block a user