summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Meng Wang <mewan@google.com> 2021-07-21 04:36:57 +0000
committer Meng Wang <mewan@google.com> 2021-07-26 21:06:33 -0700
commitba8227eb45339d4fca12a993375b840d539e73aa (patch)
treebcd71dc585748317e1c3101c85bda42e018315ac
parent4eaa49eeb615d129ea6174f20d2373d9eba84452 (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.java20
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);