Proactively unparcel bitmaps in MediaMetadata

This ensures that the GC accounts for the underlying allocations

Bug: 215820910
Test: Manual
Change-Id: I6b1d3f17abdb513b1ac929267b3d386326fa83c4
This commit is contained in:
Oliver Woodman
2022-06-15 22:35:21 +00:00
parent 016c6a7320
commit a110072a44

View File

@@ -429,6 +429,15 @@ public final class MediaMetadata implements Parcelable {
private MediaMetadata(Parcel in) {
mBundle = in.readBundle();
mBitmapDimensionLimit = Math.max(in.readInt(), 1);
// Proactively read bitmaps from known bitmap keys, to ensure that they're unparceled and
// added to mBundle's internal map. This ensures that the GC accounts for the underlying
// allocations, which it does not do if the bitmaps remain parceled (see b/215820910).
// TODO(b/223225532): Remove this workaround once the underlying allocations are properly
// tracked in NativeAllocationsRegistry.
getBitmap(METADATA_KEY_ART);
getBitmap(METADATA_KEY_ALBUM_ART);
getBitmap(METADATA_KEY_DISPLAY_ICON);
}
/**