diff options
| author | 2017-08-01 18:47:42 +0000 | |
|---|---|---|
| committer | 2017-08-01 18:47:42 +0000 | |
| commit | 50d25dc00c7d2106903fe99c4ffa8b787b75efb9 (patch) | |
| tree | 56b50962b804d13d05ce137dce4260d2b23ca7e6 | |
| parent | cb5e0e63b4b7f452aab69abeea44f96fbd05a202 (diff) | |
| parent | 1aab3fa3b5d69251fd47a6df392ba81d072cd667 (diff) | |
Merge "Refresh constants when MCC/MNC changes in PowerUI" into oc-dr1-dev
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/power/PowerUI.java | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java index a64207714093..a9139993c137 100644 --- a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java +++ b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java @@ -22,6 +22,8 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.pm.ActivityInfo; +import android.content.res.Configuration; import android.content.res.Resources; import android.database.ContentObserver; import android.os.BatteryManager; @@ -56,6 +58,7 @@ public class PowerUI extends SystemUI { private PowerManager mPowerManager; private HardwarePropertiesManager mHardwarePropertiesManager; private WarningsUI mWarnings; + private final Configuration mLastConfiguration = new Configuration(); private int mBatteryLevel = 100; private int mBatteryStatus = BatteryManager.BATTERY_STATUS_UNKNOWN; private int mPlugType = 0; @@ -71,6 +74,11 @@ public class PowerUI extends SystemUI { private int mNumTemps; private long mNextLogTime; + // We create a method reference here so that we are guaranteed that we can remove a callback + // by using the same instance (method references are not guaranteed to be the same object + // each time they are created). + private final Runnable mUpdateTempCallback = this::updateTemperatureWarning; + public void start() { mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE); mHardwarePropertiesManager = (HardwarePropertiesManager) @@ -80,6 +88,7 @@ public class PowerUI extends SystemUI { mContext, (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE), getComponent(StatusBar.class)); + mLastConfiguration.setTo(mContext.getResources().getConfiguration()); ContentObserver obs = new ContentObserver(mHandler) { @Override @@ -101,6 +110,16 @@ public class PowerUI extends SystemUI { initTemperatureWarning(); } + @Override + protected void onConfigurationChanged(Configuration newConfig) { + final int mask = ActivityInfo.CONFIG_MCC | ActivityInfo.CONFIG_MNC; + + // Safe to modify mLastConfiguration here as it's only updated by the main thread (here). + if ((mLastConfiguration.updateFrom(newConfig) & mask) != 0) { + mHandler.post(this::initTemperatureWarning); + } + } + void updateBatteryWarningLevels() { int critLevel = mContext.getResources().getInteger( com.android.internal.R.integer.config_criticalBatteryWarningLevel); @@ -255,8 +274,14 @@ public class PowerUI extends SystemUI { } mThresholdTemp = throttlingTemps[0]; } + setNextLogTime(); + // This initialization method may be called on a configuration change. Only one set of + // ongoing callbacks should be occurring, so remove any now. updateTemperatureWarning will + // schedule an ongoing callback. + mHandler.removeCallbacks(mUpdateTempCallback); + // We have passed all of the checks, start checking the temp updateTemperatureWarning(); } @@ -288,7 +313,7 @@ public class PowerUI extends SystemUI { logTemperatureStats(); - mHandler.postDelayed(this::updateTemperatureWarning, TEMPERATURE_INTERVAL); + mHandler.postDelayed(mUpdateTempCallback, TEMPERATURE_INTERVAL); } private void logAtTemperatureThreshold(float temp) { |