diff --git a/src/com/android/settings/fuelgauge/BatteryEntry.java b/src/com/android/settings/fuelgauge/BatteryEntry.java index 7a18cd0fa94..1733a6e6df6 100644 --- a/src/com/android/settings/fuelgauge/BatteryEntry.java +++ b/src/com/android/settings/fuelgauge/BatteryEntry.java @@ -38,6 +38,7 @@ import com.android.settingslib.Utils; import java.util.ArrayList; import java.util.HashMap; +import java.util.Locale; /** * Wraps the power usage data of a BatterySipper with information about package name @@ -55,6 +56,8 @@ public class BatteryEntry { static final ArrayList mRequestQueue = new ArrayList(); static Handler sHandler; + static Locale sCurrentLocale = null; + static private class NameAndIconLoader extends Thread { private boolean mAbort = false; @@ -227,6 +230,13 @@ public class BatteryEntry { } void getQuickNameIconForUid(final int uid) { + // Locale sync to system config in Settings + final Locale locale = Locale.getDefault(); + if (sCurrentLocale != locale) { + clearUidCache(); + sCurrentLocale = locale; + } + final String uidString = Integer.toString(uid); if (sUidCache.containsKey(uidString)) { UidToDetail utd = sUidCache.get(uidString); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryEntryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryEntryTest.java index 21b1d29f3fc..b6be9ee1c74 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryEntryTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryEntryTest.java @@ -39,6 +39,8 @@ import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; +import java.util.Locale; + @RunWith(RobolectricTestRunner.class) public class BatteryEntryTest { @@ -148,4 +150,17 @@ public class BatteryEntryTest { assertThat(entry.extractPackagesFromSipper(entry.sipper)).isEqualTo(entry.sipper.mPackages); } + + @Test + public void testUidCache_switchLocale_shouldCleanCache() { + BatteryEntry.stopRequestQueue(); + + Locale.setDefault(new Locale("en_US")); + BatteryEntry.sUidCache.put(Integer.toString(APP_UID), null); + assertThat(BatteryEntry.sUidCache).isNotEmpty(); + + Locale.setDefault(new Locale("zh_TW")); + createBatteryEntryForApp(); + assertThat(BatteryEntry.sUidCache).isEmpty(); // check if cache is clear + } }