summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--telephony/java/android/telephony/SubscriptionManager.java61
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();
}
}