diff options
| author | 2021-07-21 04:36:57 +0000 | |
|---|---|---|
| committer | 2021-07-26 21:06:33 -0700 | |
| commit | ba8227eb45339d4fca12a993375b840d539e73aa (patch) | |
| tree | bcd71dc585748317e1c3101c85bda42e018315ac | |
| parent | 4eaa49eeb615d129ea6174f20d2373d9eba84452 (diff) | |
Lazily load bitmap of SubscriptionInfo
Bug: 194251398
Test: manual - see the bug
Change-Id: I0af239e1befeff8d4f00a27bc9679eb0b4849500
Merged-In: I0af239e1befeff8d4f00a27bc9679eb0b4849500
(cherry picked from commit 0e0a12ccf38c946f2ec09ab7f75901207b2f7325)
| -rw-r--r-- | telephony/java/android/telephony/SubscriptionInfo.java | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/telephony/java/android/telephony/SubscriptionInfo.java b/telephony/java/android/telephony/SubscriptionInfo.java index 104cc7516aeb..2bbfdba425c9 100644 --- a/telephony/java/android/telephony/SubscriptionInfo.java +++ b/telephony/java/android/telephony/SubscriptionInfo.java @@ -23,6 +23,7 @@ import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; @@ -113,9 +114,9 @@ public class SubscriptionInfo implements Parcelable { private int mDataRoaming; /** - * SIM Icon bitmap + * SIM icon bitmap cache */ - private Bitmap mIconBitmap; + @Nullable private Bitmap mIconBitmap; /** * Mobile Country Code @@ -403,6 +404,10 @@ public class SubscriptionInfo implements Parcelable { * @return A bitmap icon for this {@code SubscriptionInfo}. */ public Bitmap createIconBitmap(Context context) { + if (mIconBitmap == null) { + mIconBitmap = BitmapFactory.decodeResource(context.getResources(), + com.android.internal.R.drawable.ic_sim_card_multi_24px_clr); + } int width = mIconBitmap.getWidth(); int height = mIconBitmap.getHeight(); DisplayMetrics metrics = context.getResources().getDisplayMetrics(); @@ -765,7 +770,6 @@ public class SubscriptionInfo implements Parcelable { String mcc = source.readString(); String mnc = source.readString(); String countryIso = source.readString(); - Bitmap iconBitmap = source.readParcelable(Bitmap.class.getClassLoader()); boolean isEmbedded = source.readBoolean(); UiccAccessRule[] nativeAccessRules = source.createTypedArray(UiccAccessRule.CREATOR); String cardString = source.readString(); @@ -784,10 +788,10 @@ public class SubscriptionInfo implements Parcelable { boolean areUiccApplicationsEnabled = source.readBoolean(); SubscriptionInfo info = new SubscriptionInfo(id, iccId, simSlotIndex, displayName, - carrierName, nameSource, iconTint, number, dataRoaming, iconBitmap, mcc, mnc, - countryIso, isEmbedded, nativeAccessRules, cardString, cardId, isOpportunistic, - groupUUID, isGroupDisabled, carrierid, profileClass, subType, groupOwner, - carrierConfigAccessRules, areUiccApplicationsEnabled); + carrierName, nameSource, iconTint, number, dataRoaming, /* icon= */ null, + mcc, mnc, countryIso, isEmbedded, nativeAccessRules, cardString, cardId, + isOpportunistic, groupUUID, isGroupDisabled, carrierid, profileClass, subType, + groupOwner, carrierConfigAccessRules, areUiccApplicationsEnabled); info.setAssociatedPlmns(ehplmns, hplmns); return info; } @@ -812,7 +816,7 @@ public class SubscriptionInfo implements Parcelable { dest.writeString(mMcc); dest.writeString(mMnc); dest.writeString(mCountryIso); - dest.writeParcelable(mIconBitmap, flags); + // Do not write mIconBitmap since it should be lazily loaded on first usage dest.writeBoolean(mIsEmbedded); dest.writeTypedArray(mNativeAccessRules, flags); dest.writeString(mCardString); |