From 0bc26bd9949bd8343c0adcbfb033a3c0ff6aff55 Mon Sep 17 00:00:00 2001 From: Robert Snoeberger Date: Tue, 29 Sep 2020 16:32:06 -0400 Subject: [PATCH] Avoid loading action icons when possible This is a similar memory optimization as applied to the app icon in ag/12727673. Bug: 160591450 Test: manual - heap_profile sysui while toggling play/pause. Change-Id: I66fee5b8cb6b2abdbb7dadda09ccd1d4905c5706 --- .../com/android/systemui/media/MediaControlPanel.java | 2 +- .../SystemUI/src/com/android/systemui/media/MediaData.kt | 2 +- .../src/com/android/systemui/media/MediaDataManager.kt | 9 +++++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java index af50c68d2a2c8..fd9209838c613 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +++ b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java @@ -329,7 +329,7 @@ public class MediaControlPanel { int actionId = ACTION_IDS[i]; final ImageButton button = mViewHolder.getAction(actionId); MediaAction mediaAction = actionIcons.get(i); - button.setImageDrawable(mediaAction.getDrawable()); + button.setImageIcon(mediaAction.getIcon()); button.setContentDescription(mediaAction.getContentDescription()); Runnable action = mediaAction.getAction(); diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaData.kt b/packages/SystemUI/src/com/android/systemui/media/MediaData.kt index 9d92b81ce2cef..0ed96eeac4020 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaData.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaData.kt @@ -109,7 +109,7 @@ data class MediaData( /** State of a media action. */ data class MediaAction( - val drawable: Drawable?, + val icon: Icon?, val action: Runnable?, val contentDescription: CharSequence? ) diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt index 3c784cbeff267..5d63cc7966d5c 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt @@ -501,8 +501,13 @@ class MediaDataManager( } else { null } + val mediaActionIcon = if (action.getIcon()?.getType() == Icon.TYPE_RESOURCE) { + Icon.createWithResource(packageContext, action.getIcon()!!.getResId()) + } else { + action.getIcon() + } val mediaAction = MediaAction( - action.getIcon().loadDrawable(packageContext), + mediaActionIcon, runnable, action.title) actionIcons.add(mediaAction) @@ -612,7 +617,7 @@ class MediaDataManager( private fun getResumeMediaAction(action: Runnable): MediaAction { return MediaAction( - context.getDrawable(R.drawable.lb_ic_play), + Icon.createWithResource(context, R.drawable.lb_ic_play), action, context.getString(R.string.controls_media_resume) )