diff options
author | Tim Murray <timmurray@google.com> | 2022-07-22 14:44:00 -0700 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-08-24 01:43:35 +0000 |
commit | 1442a8d02cfaebd77a1facd64c1f28ce5894063d (patch) | |
tree | 99d283476adbb031f9de6fb00638f21ef29bb3e3 | |
parent | d5c4f94ebc530bf314048eaf19e6f9df8490ccc1 (diff) | |
download | base-1442a8d02cfaebd77a1facd64c1f28ce5894063d.tar.gz |
RemoteViews: fix BitmapCache after immutable Bitmap switch
Test: widgets appear correctly
Bug: 237256275
Change-Id: I864ac1ba8ac771c326dc215ae4e712ceb0b6057b
(cherry picked from commit 4f359bd7655ba6d4f647bb62b877b721f25bbeb5)
Merged-In: I864ac1ba8ac771c326dc215ae4e712ceb0b6057b
-rw-r--r-- | core/java/android/widget/RemoteViews.java | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java index 2879cd888d2d..bc7e31fac222 100644 --- a/core/java/android/widget/RemoteViews.java +++ b/core/java/android/widget/RemoteViews.java @@ -1598,7 +1598,13 @@ public class RemoteViews implements Parcelable, Filter { public BitmapCache(Parcel source) { mBitmaps = source.createTypedArrayList(Bitmap.CREATOR); - mBitmapHashes = source.readSparseIntArray(); + mBitmapHashes = new SparseIntArray(); + for (int i = 0; i < mBitmaps.size(); i++) { + Bitmap b = mBitmaps.get(i); + if (b != null) { + mBitmapHashes.put(b.hashCode(), i); + } + } } public int getBitmapId(Bitmap b) { @@ -1614,7 +1620,7 @@ public class RemoteViews implements Parcelable, Filter { b = b.asShared(); } mBitmaps.add(b); - mBitmapHashes.put(mBitmaps.size() - 1, hash); + mBitmapHashes.put(hash, mBitmaps.size() - 1); mBitmapMemory = -1; return (mBitmaps.size() - 1); } @@ -1631,7 +1637,6 @@ public class RemoteViews implements Parcelable, Filter { public void writeBitmapsToParcel(Parcel dest, int flags) { dest.writeTypedList(mBitmaps, flags); - dest.writeSparseIntArray(mBitmapHashes); } public int getBitmapMemory() { |