From ecc8fa8557642332bf198066c54da6be2fc02468 Mon Sep 17 00:00:00 2001 From: Robert Snoeberger Date: Tue, 29 Sep 2020 14:16:00 -0400 Subject: [PATCH] Avoid loading app icon bitmap when possible The layout file is using a CachingIconView for the app icon to avoid reloading the icon when possible. But, the icon is being explicitly loaded in MediaDataManager. This change eliminates this unnecessary work. Bug: 160591450 Test: manual - heap_profile sysui while toggling play/pause. Change-Id: I5677e489229fc53f2d5cdc19023acf49a80c7caa --- .../src/com/android/systemui/media/MediaControlPanel.java | 5 ++--- .../SystemUI/src/com/android/systemui/media/MediaData.kt | 2 +- .../src/com/android/systemui/media/MediaDataManager.kt | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java index e55678dc986bc..af50c68d2a2c8 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +++ b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java @@ -249,10 +249,9 @@ public class MediaControlPanel { // App icon ImageView appIcon = mViewHolder.getAppIcon(); if (data.getAppIcon() != null) { - appIcon.setImageDrawable(data.getAppIcon()); + appIcon.setImageIcon(data.getAppIcon()); } else { - Drawable iconDrawable = mContext.getDrawable(R.drawable.ic_music_note); - appIcon.setImageDrawable(iconDrawable); + appIcon.setImageResource(R.drawable.ic_music_note); } // Song name diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaData.kt b/packages/SystemUI/src/com/android/systemui/media/MediaData.kt index 40a879abde341..9d92b81ce2cef 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaData.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaData.kt @@ -33,7 +33,7 @@ data class MediaData( /** * Icon shown on player, close to app name. */ - val appIcon: Drawable?, + val appIcon: Icon?, /** * Artist name. */ diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt index cb6b22c2321f4..567384b7a3968 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt @@ -455,7 +455,7 @@ class MediaDataManager( val app = builder.loadHeaderAppName() // App Icon - val smallIconDrawable: Drawable = sbn.notification.smallIcon.loadDrawable(context) + val smallIcon = sbn.notification.smallIcon // Song name var song: CharSequence? = metadata?.getString(MediaMetadata.METADATA_KEY_DISPLAY_TITLE) @@ -518,7 +518,7 @@ class MediaDataManager( val hasCheckedForResume = mediaEntries[key]?.hasCheckedForResume == true val active = mediaEntries[key]?.active ?: true onMediaDataLoaded(key, oldKey, MediaData(sbn.normalizedUserId, true, bgColor, app, - smallIconDrawable, artist, song, artWorkIcon, actionIcons, + smallIcon, artist, song, artWorkIcon, actionIcons, actionsToShowCollapsed, sbn.packageName, token, notif.contentIntent, null, active, resumeAction = resumeAction, isLocalSession = isLocalSession, notificationKey = key, hasCheckedForResume = hasCheckedForResume,