summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Murray <timmurray@google.com>2022-07-22 14:44:00 -0700
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-08-24 01:43:35 +0000
commit1442a8d02cfaebd77a1facd64c1f28ce5894063d (patch)
tree99d283476adbb031f9de6fb00638f21ef29bb3e3
parentd5c4f94ebc530bf314048eaf19e6f9df8490ccc1 (diff)
downloadbase-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.java11
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() {