Fix issue "open battery settings, switch locale, apps are still in old locale" into pi-dev

Clear uid to package detail cache by checking locale before use.

Fixes: 62422871
Test: RunSettingsRoboTest pass,
manual test
(1) open advance battery settings page,
(2) switch locale,
(3) back to advance battery settings page  => pass
manual test
(1) open advance battery settings page, and then back to settings main page
(2) switch locale,
(3) go to advance battery settings page  => pass

Change-Id: Ifac830706539022cd9bf51d3f33e728aadc163f4
This commit is contained in:
WenHung_Teng
2018-03-22 16:23:21 +08:00
parent baea1c87f5
commit 8e14da1d30
2 changed files with 25 additions and 0 deletions

View File

@@ -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<BatteryEntry> mRequestQueue = new ArrayList<BatteryEntry>();
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);