Actually use the cache for names and icons.
Fixes the flashes in name and icon in Battery usage screen when refreshing.
Bug: 8219466
Some earlier refactoring must have messed up the cache's scope. It will now
avoid reloading name and icon if already present in the cache.
Change-Id: I99c1f14dd53828dcb74cf12c02c47628e2e64d30
diff --git a/src/com/android/settings/fuelgauge/BatterySipper.java b/src/com/android/settings/fuelgauge/BatterySipper.java
index ffc6651..9a8e783 100644
--- a/src/com/android/settings/fuelgauge/BatterySipper.java
+++ b/src/com/android/settings/fuelgauge/BatterySipper.java
@@ -32,7 +32,8 @@
class BatterySipper implements Comparable<BatterySipper> {
final Context mContext;
- final HashMap<String,UidToDetail> mUidCache = new HashMap<String,UidToDetail>();
+ /* Cache cleared when PowerUsageSummary is destroyed */
+ static final HashMap<String,UidToDetail> sUidCache = new HashMap<String,UidToDetail>();
final ArrayList<BatterySipper> mRequestQueue;
final Handler mHandler;
String name;
@@ -99,8 +100,8 @@
void getQuickNameIconForUid(Uid uidObj) {
final int uid = uidObj.getUid();
final String uidString = Integer.toString(uid);
- if (mUidCache.containsKey(uidString)) {
- UidToDetail utd = mUidCache.get(uidString);
+ if (sUidCache.containsKey(uidString)) {
+ UidToDetail utd = sUidCache.get(uidString);
defaultPackageName = utd.packageName;
name = utd.name;
icon = utd.icon;
@@ -193,7 +194,7 @@
utd.name = name;
utd.icon = icon;
utd.packageName = defaultPackageName;
- mUidCache.put(uidString, utd);
+ sUidCache.put(uidString, utd);
mHandler.sendMessage(mHandler.obtainMessage(PowerUsageSummary.MSG_UPDATE_NAME_ICON, this));
}
}
\ No newline at end of file
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index 8ee8960..1dcb02c 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -178,6 +178,8 @@
super.onDestroy();
if (getActivity().isChangingConfigurations()) {
sStatsXfer = mStats;
+ } else {
+ BatterySipper.sUidCache.clear();
}
}