Merge "Avoid crash when resetting defaults." into tm-dev

This commit is contained in:
Kweku Adams
2022-03-25 17:07:33 +00:00
committed by Android (Google) Code Review
3 changed files with 38 additions and 0 deletions

View File

@@ -76,6 +76,8 @@ class ChargingModifier extends Modifier {
} }
private final class ChargingTracker extends BroadcastReceiver { private final class ChargingTracker extends BroadcastReceiver {
private boolean mIsSetup = false;
/** /**
* Track whether we're "charging", where charging means that we're ready to commit to * Track whether we're "charging", where charging means that we're ready to commit to
* doing work. * doing work.
@@ -83,6 +85,10 @@ class ChargingModifier extends Modifier {
private volatile boolean mCharging; private volatile boolean mCharging;
public void startTracking(@NonNull Context context) { public void startTracking(@NonNull Context context) {
if (mIsSetup) {
return;
}
final IntentFilter filter = new IntentFilter(); final IntentFilter filter = new IntentFilter();
filter.addAction(BatteryManager.ACTION_CHARGING); filter.addAction(BatteryManager.ACTION_CHARGING);
filter.addAction(BatteryManager.ACTION_DISCHARGING); filter.addAction(BatteryManager.ACTION_DISCHARGING);
@@ -91,10 +97,17 @@ class ChargingModifier extends Modifier {
// Initialise tracker state. // Initialise tracker state.
final BatteryManager batteryManager = context.getSystemService(BatteryManager.class); final BatteryManager batteryManager = context.getSystemService(BatteryManager.class);
mCharging = batteryManager.isCharging(); mCharging = batteryManager.isCharging();
mIsSetup = true;
} }
public void stopTracking(@NonNull Context context) { public void stopTracking(@NonNull Context context) {
if (!mIsSetup) {
return;
}
context.unregisterReceiver(this); context.unregisterReceiver(this);
mIsSetup = false;
} }
@Override @Override

View File

@@ -72,6 +72,7 @@ class DeviceIdleModifier extends Modifier {
} }
private final class DeviceIdleTracker extends BroadcastReceiver { private final class DeviceIdleTracker extends BroadcastReceiver {
private boolean mIsSetup = false;
private volatile boolean mDeviceIdle; private volatile boolean mDeviceIdle;
private volatile boolean mDeviceLightIdle; private volatile boolean mDeviceLightIdle;
@@ -80,6 +81,10 @@ class DeviceIdleModifier extends Modifier {
} }
void startTracking(@NonNull Context context) { void startTracking(@NonNull Context context) {
if (mIsSetup) {
return;
}
IntentFilter filter = new IntentFilter(); IntentFilter filter = new IntentFilter();
filter.addAction(PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED); filter.addAction(PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED);
filter.addAction(PowerManager.ACTION_LIGHT_DEVICE_IDLE_MODE_CHANGED); filter.addAction(PowerManager.ACTION_LIGHT_DEVICE_IDLE_MODE_CHANGED);
@@ -88,10 +93,17 @@ class DeviceIdleModifier extends Modifier {
// Initialise tracker state. // Initialise tracker state.
mDeviceIdle = mPowerManager.isDeviceIdleMode(); mDeviceIdle = mPowerManager.isDeviceIdleMode();
mDeviceLightIdle = mPowerManager.isLightDeviceIdleMode(); mDeviceLightIdle = mPowerManager.isLightDeviceIdleMode();
mIsSetup = true;
} }
void stopTracking(@NonNull Context context) { void stopTracking(@NonNull Context context) {
if (!mIsSetup) {
return;
}
context.unregisterReceiver(this); context.unregisterReceiver(this);
mIsSetup = false;
} }
@Override @Override

View File

@@ -72,6 +72,8 @@ class PowerSaveModeModifier extends Modifier {
// TODO: migrate to relying on PowerSaveState and ServiceType.TARE // TODO: migrate to relying on PowerSaveState and ServiceType.TARE
private final class PowerSaveModeTracker extends BroadcastReceiver { private final class PowerSaveModeTracker extends BroadcastReceiver {
private boolean mIsSetup = false;
private final PowerManager mPowerManager; private final PowerManager mPowerManager;
private volatile boolean mPowerSaveModeEnabled; private volatile boolean mPowerSaveModeEnabled;
@@ -80,16 +82,27 @@ class PowerSaveModeModifier extends Modifier {
} }
public void startTracking(@NonNull Context context) { public void startTracking(@NonNull Context context) {
if (mIsSetup) {
return;
}
final IntentFilter filter = new IntentFilter(); final IntentFilter filter = new IntentFilter();
filter.addAction(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED); filter.addAction(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED);
context.registerReceiver(this, filter); context.registerReceiver(this, filter);
// Initialise tracker state. // Initialise tracker state.
mPowerSaveModeEnabled = mPowerManager.isPowerSaveMode(); mPowerSaveModeEnabled = mPowerManager.isPowerSaveMode();
mIsSetup = true;
} }
public void stopTracking(@NonNull Context context) { public void stopTracking(@NonNull Context context) {
if (!mIsSetup) {
return;
}
context.unregisterReceiver(this); context.unregisterReceiver(this);
mIsSetup = false;
} }
@Override @Override