Fix the icon flash issue cause from the shared drawable icon

different time slot may have the same application entry, we should not make them share the same drawable instance to impact the states, we will use newDrawable() method to create a new one for each application entry

Bug: 198553245
Test: make SettingsRoboTests
Change-Id: I4a321133ba171817fca1ab7ad47b9af8f7450675
This commit is contained in:
ykhung
2021-09-11 00:42:56 +08:00
committed by YUKAI HUNG
parent b62cdecc67
commit a3b89868f4

View File

@@ -113,7 +113,7 @@ public class BatteryDiffEntry {
/** Gets the app icon {@link Drawable} for this entry. */ /** Gets the app icon {@link Drawable} for this entry. */
public Drawable getAppIcon() { public Drawable getAppIcon() {
loadLabelAndIcon(); loadLabelAndIcon();
return mAppIcon; return mAppIcon.getConstantState().newDrawable();
} }
/** Gets the app icon id for this entry. */ /** Gets the app icon id for this entry. */
@@ -348,8 +348,8 @@ public class BatteryDiffEntry {
private Drawable getBadgeIconForUser(Drawable icon) { private Drawable getBadgeIconForUser(Drawable icon) {
final int userId = UserHandle.getUserId((int) mBatteryHistEntry.mUid); final int userId = UserHandle.getUserId((int) mBatteryHistEntry.mUid);
final UserHandle userHandle = new UserHandle(userId); return userId == UserHandle.USER_OWNER ? icon :
return mUserManager.getBadgedIconForUser(icon, userHandle); mUserManager.getBadgedIconForUser(icon, new UserHandle(userId));
} }
private static boolean isSystemUid(int uid) { private static boolean isSystemUid(int uid) {