Merge "Optimized resource reading"
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java
index 5eded76..d242d8a 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java
@@ -41,6 +41,9 @@
 
 import com.android.settingslib.development.DevelopmentSettingsEnabler;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * Settings activity for the cell broadcast receiver.
  */
@@ -112,6 +115,9 @@
     // For watch layout
     private static final String KEY_WATCH_ALERT_REMINDER = "watch_alert_reminder";
 
+    // Resource cache
+    private static final Map<Integer, Resources> sResourcesCache = new HashMap<>();
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -527,6 +533,14 @@
                 return context.getResources();
             }
         }
-        return SubscriptionManager.getResourcesForSubId(context, subId);
+
+        if (sResourcesCache.containsKey(subId)) {
+            return sResourcesCache.get(subId);
+        }
+
+        Resources res = SubscriptionManager.getResourcesForSubId(context, subId);
+        sResourcesCache.put(subId, res);
+
+        return res;
     }
 }