diff options
| -rw-r--r-- | telephony/java/android/telephony/SubscriptionManager.java | 61 |
1 files changed, 43 insertions, 18 deletions
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index 801d63905af9..45dc7afc3dc0 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -135,29 +135,28 @@ public class SubscriptionManager { public static final String CACHE_KEY_DEFAULT_SUB_ID_PROPERTY = "cache_key.telephony.get_default_sub_id"; - private static final int DEFAULT_SUB_ID_CACHE_SIZE = 1; + /** @hide */ + public static final String CACHE_KEY_DEFAULT_DATA_SUB_ID_PROPERTY = + "cache_key.telephony.get_default_data_sub_id"; + + private static final int MAX_CACHE_SIZE = 4; private static PropertyInvalidatedCache<Void, Integer> sDefaultSubIdCache = new PropertyInvalidatedCache<Void, Integer>( - DEFAULT_SUB_ID_CACHE_SIZE, - CACHE_KEY_DEFAULT_SUB_ID_PROPERTY) { - @Override - protected Integer recompute(Void query) { - int subId = INVALID_SUBSCRIPTION_ID; + MAX_CACHE_SIZE, CACHE_KEY_DEFAULT_SUB_ID_PROPERTY) { + @Override + protected Integer recompute(Void query) { + return getDefaultSubscriptionIdInternal(); + }}; - try { - ISub iSub = TelephonyManager.getSubscriptionService(); - if (iSub != null) { - subId = iSub.getDefaultSubId(); - } - } catch (RemoteException ex) { - // ignore it - } + private static PropertyInvalidatedCache<Void, Integer> sDefaultDataSubIdCache = + new PropertyInvalidatedCache<Void, Integer>( + MAX_CACHE_SIZE, CACHE_KEY_DEFAULT_DATA_SUB_ID_PROPERTY) { + @Override + protected Integer recompute(Void query) { + return getDefaultDataSubscriptionIdInternal(); + }}; - if (VDBG) logd("getDefaultSubId=" + subId); - return subId; - } - }; /** * Generates a content {@link Uri} used to receive updates on simInfo change * on the given subscriptionId @@ -1871,6 +1870,22 @@ public class SubscriptionManager { return sDefaultSubIdCache.query(null); } + private static int getDefaultSubscriptionIdInternal() { + int subId = INVALID_SUBSCRIPTION_ID; + + try { + ISub iSub = TelephonyManager.getSubscriptionService(); + if (iSub != null) { + subId = iSub.getDefaultSubId(); + } + } catch (RemoteException ex) { + // ignore it + } + + if (VDBG) logd("getDefaultSubId=" + subId); + return subId; + } + /** * Returns the system's default voice subscription id. * @@ -2021,6 +2036,10 @@ public class SubscriptionManager { * @return the default data subscription Id. */ public static int getDefaultDataSubscriptionId() { + return sDefaultDataSubIdCache.query(null); + } + + private static int getDefaultDataSubscriptionIdInternal() { int subId = INVALID_SUBSCRIPTION_ID; try { @@ -3296,6 +3315,11 @@ public class SubscriptionManager { PropertyInvalidatedCache.invalidateCache(CACHE_KEY_DEFAULT_SUB_ID_PROPERTY); } + /** @hide */ + public static void invalidateDefaultDataSubIdCaches() { + PropertyInvalidatedCache.invalidateCache(CACHE_KEY_DEFAULT_DATA_SUB_ID_PROPERTY); + } + /** * Clears all process-local binder caches. * @@ -3303,5 +3327,6 @@ public class SubscriptionManager { */ public static void clearCaches() { sDefaultSubIdCache.clear(); + sDefaultDataSubIdCache.clear(); } } |