summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adam Lesinski <adamlesinski@google.com> 2017-08-01 18:47:42 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-08-01 18:47:42 +0000
commit50d25dc00c7d2106903fe99c4ffa8b787b75efb9 (patch)
tree56b50962b804d13d05ce137dce4260d2b23ca7e6
parentcb5e0e63b4b7f452aab69abeea44f96fbd05a202 (diff)
parent1aab3fa3b5d69251fd47a6df392ba81d072cd667 (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.java27
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) {