diff options
| author | 2022-08-17 23:54:03 +0000 | |
|---|---|---|
| committer | 2022-08-17 23:54:03 +0000 | |
| commit | 7deacb00aff5b36dfb4a65abbf2450732f99e288 (patch) | |
| tree | ff63730c33075f15f4fa51b8dccb6273006376a4 | |
| parent | 12699672b5c0f1d040126ad6d99185926d280994 (diff) | |
| parent | 308b8f45aa194d986205973fc0afca88d9d4dfce (diff) | |
Merge "RemoteViews: fix BitmapCache after immutable Bitmap switch" into tm-dev am: 5c7bab4ccb am: 308b8f45aa
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19570391
Change-Id: I2446ada0ad16794ff64ebfc3cd997b674bf92725
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -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() { |