diff --git a/src/com/android/settings/network/InternetPreferenceController.java b/src/com/android/settings/network/InternetPreferenceController.java index b1bc694f3f9..b886ff04230 100644 --- a/src/com/android/settings/network/InternetPreferenceController.java +++ b/src/com/android/settings/network/InternetPreferenceController.java @@ -45,7 +45,6 @@ import com.android.settings.widget.SummaryUpdater; import com.android.settings.wifi.WifiSummaryUpdater; import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; -import com.android.settingslib.mobile.dataservice.DataServiceUtils; import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity; import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; import com.android.settingslib.mobile.dataservice.UiccInfoEntity; @@ -238,10 +237,8 @@ public class InternetPreferenceController extends AbstractPreferenceController i @Override public void onAvailableSubInfoChanged(List subInfoEntityList) { - if (DataServiceUtils.shouldUpdateEntityList(mSubInfoEntityList, subInfoEntityList)) { - mSubInfoEntityList = subInfoEntityList; - updateState(mPreference); - } + mSubInfoEntityList = subInfoEntityList; + updateState(mPreference); } @Override diff --git a/src/com/android/settings/network/MobileNetworkRepository.java b/src/com/android/settings/network/MobileNetworkRepository.java index 0c150afaf53..3f62b7d7ac7 100644 --- a/src/com/android/settings/network/MobileNetworkRepository.java +++ b/src/com/android/settings/network/MobileNetworkRepository.java @@ -42,7 +42,6 @@ import android.util.Log; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; -import com.android.settingslib.mobile.dataservice.DataServiceUtils; import com.android.settingslib.mobile.dataservice.MobileNetworkDatabase; import com.android.settingslib.mobile.dataservice.MobileNetworkInfoDao; import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity; @@ -53,7 +52,6 @@ import com.android.settingslib.mobile.dataservice.UiccInfoEntity; import java.util.ArrayList; import java.util.Collection; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutorService; @@ -71,7 +69,12 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions private static final String TAG = "MobileNetworkRepository"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); - private final ExecutorService mExecutor = Executors.newSingleThreadExecutor(); + private static ExecutorService sExecutor = Executors.newSingleThreadExecutor(); + private static Map sCacheSubscriptionInfoEntityMap = + new ArrayMap<>(); + private static Map sCacheMobileNetworkInfoEntityMap = + new ArrayMap<>(); + private static Map sCacheUiccInfoEntityMap = new ArrayMap<>(); private SubscriptionManager mSubscriptionManager; private TelephonyManager mTelephonyManager; @@ -130,8 +133,8 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions mDataContentObserver = new MobileDataContentObserver( new Handler(Looper.getMainLooper())); mDataContentObserver.setOnMobileDataChangedListener(() -> { - mExecutor.execute(() -> { - insertMobileNetworkInfo(context); + sExecutor.execute(() -> { + insertMobileNetworkInfo(context, String.valueOf(mSubId)); }); }); mFilter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED); @@ -192,19 +195,25 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions } private void observeAllSubInfo(LifecycleOwner lifecycleOwner) { - Log.d(TAG, "Observe subInfo."); + if (DEBUG) { + Log.d(TAG, "Observe subInfo."); + } mMobileNetworkDatabase.queryAvailableSubInfos().observe( lifecycleOwner, this::onAvailableSubInfoChanged); } private void observeAllUiccInfo(LifecycleOwner lifecycleOwner) { - Log.d(TAG, "Observe UICC info."); + if (DEBUG) { + Log.d(TAG, "Observe UICC info."); + } mMobileNetworkDatabase.queryAllUiccInfo().observe( lifecycleOwner, this::onAllUiccInfoChanged); } private void observeAllMobileNetworkInfo(LifecycleOwner lifecycleOwner) { - Log.d(TAG, "Observe mobile network info."); + if (DEBUG) { + Log.d(TAG, "Observe mobile network info."); + } mMobileNetworkDatabase.queryAllMobileNetworkInfo().observe( lifecycleOwner, this::onAllMobileNetworkInfoChanged); } @@ -321,35 +330,44 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions } public void insertSubInfo(Context context, SubscriptionInfo info) { - mExecutor.execute(() -> { - SubscriptionInfoEntity subInfoEntity = - convertToSubscriptionInfoEntity(context, info); - if (subInfoEntity != null) { - int subId = info.getSubscriptionId(); - mSubscriptionInfoMap.put(subId, info); + SubscriptionInfoEntity subInfoEntity = + convertToSubscriptionInfoEntity(context, info); + String subId = String.valueOf(mSubId); + if (subInfoEntity != null) { + if (!sCacheSubscriptionInfoEntityMap.containsKey(subId) + || (sCacheSubscriptionInfoEntityMap.get(subId) != null + && !sCacheSubscriptionInfoEntityMap.get(subId).equals(subInfoEntity))) { + sCacheSubscriptionInfoEntityMap.put(subId, subInfoEntity); if (DEBUG) { Log.d(TAG, "convert subId " + subId + "to SubscriptionInfoEntity: " + subInfoEntity); } mMobileNetworkDatabase.insertSubsInfo(subInfoEntity); + insertUiccInfo(subId); + insertMobileNetworkInfo(context, subId); mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_MOBILE_NETWORK_DB_INSERT_SUB_INFO); } else if (DEBUG) { Log.d(TAG, "Can not insert subInfo, the entity is null"); } - }); + } } public void deleteAllInfoBySubId(String subId) { - mExecutor.execute(() -> { - mMobileNetworkDatabase.deleteSubInfoBySubId(subId); - mMobileNetworkDatabase.deleteUiccInfoBySubId(subId); - mMobileNetworkDatabase.deleteMobileNetworkInfoBySubId(subId); - }); + if (DEBUG) { + Log.d(TAG, "deleteAllInfoBySubId, subId = " + subId); + } + mMobileNetworkDatabase.deleteSubInfoBySubId(subId); + mMobileNetworkDatabase.deleteUiccInfoBySubId(subId); + mMobileNetworkDatabase.deleteMobileNetworkInfoBySubId(subId); mAvailableSubInfoEntityList.removeIf(info -> info.subId.equals(subId)); mActiveSubInfoEntityList.removeIf(info -> info.subId.equals(subId)); mUiccInfoEntityList.removeIf(info -> info.subId.equals(subId)); mMobileNetworkInfoEntityList.removeIf(info -> info.subId.equals(subId)); + mSubscriptionInfoMap.remove(Integer.parseInt(subId)); + sCacheSubscriptionInfoEntityMap.remove(subId); + sCacheUiccInfoEntityMap.remove(subId); + sCacheMobileNetworkInfoEntityMap.remove(subId); mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_MOBILE_NETWORK_DB_DELETE_DATA); } @@ -368,8 +386,6 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions return null; } else { getUiccInfoBySubscriptionInfo(uiccSlotInfos, subInfo); - insertUiccInfo(); - insertMobileNetworkInfo(context); SubscriptionInfo firstRemovableSubInfo = SubscriptionUtil.getFirstRemovableSubscription( context); SubscriptionInfo subscriptionOrDefault = SubscriptionUtil.getSubscriptionOrDefault( @@ -406,24 +422,32 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions } } - public void insertUiccInfo() { + public void insertUiccInfo(String subId) { UiccInfoEntity uiccInfoEntity = convertToUiccInfoEntity(); if (DEBUG) { Log.d(TAG, "uiccInfoEntity = " + uiccInfoEntity); } - mMobileNetworkDatabase.insertUiccInfo(uiccInfoEntity); - mMetricsFeatureProvider.action(mContext, - SettingsEnums.ACTION_MOBILE_NETWORK_DB_INSERT_UICC_INFO); + if (!sCacheUiccInfoEntityMap.containsKey(subId) + || !sCacheUiccInfoEntityMap.get(subId).equals(uiccInfoEntity)) { + sCacheUiccInfoEntityMap.put(subId, uiccInfoEntity); + mMobileNetworkDatabase.insertUiccInfo(uiccInfoEntity); + mMetricsFeatureProvider.action(mContext, + SettingsEnums.ACTION_MOBILE_NETWORK_DB_INSERT_UICC_INFO); + } } - public void insertMobileNetworkInfo(Context context) { + public void insertMobileNetworkInfo(Context context, String subId) { MobileNetworkInfoEntity mobileNetworkInfoEntity = convertToMobileNetworkInfoEntity(context); if (DEBUG) { Log.d(TAG, "mobileNetworkInfoEntity = " + mobileNetworkInfoEntity); } - mMobileNetworkDatabase.insertMobileNetworkInfo(mobileNetworkInfoEntity); - mMetricsFeatureProvider.action(mContext, - SettingsEnums.ACTION_MOBILE_NETWORK_DB_INSERT_MOBILE_NETWORK_INFO); + if (!sCacheMobileNetworkInfoEntityMap.containsKey(subId) + || !sCacheMobileNetworkInfoEntityMap.get(subId).equals(mobileNetworkInfoEntity)) { + sCacheMobileNetworkInfoEntityMap.put(subId, mobileNetworkInfoEntity); + mMobileNetworkDatabase.insertMobileNetworkInfo(mobileNetworkInfoEntity); + mMetricsFeatureProvider.action(mContext, + SettingsEnums.ACTION_MOBILE_NETWORK_DB_INSERT_MOBILE_NETWORK_INFO); + } } public MobileNetworkInfoEntity convertToMobileNetworkInfoEntity(Context context) { @@ -468,42 +492,56 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions } private void insertAvailableSubInfoToEntity(List availableInfoList) { - if ((availableInfoList == null || availableInfoList.size() == 0) - && mAvailableSubInfoEntityList.size() != 0) { - if (DEBUG) { - Log.d(TAG, "availableSudInfoList from framework is empty, remove all subs"); - } - + sExecutor.execute(() -> { SubscriptionInfoEntity[] availableInfoArray = mAvailableSubInfoEntityList.toArray( new SubscriptionInfoEntity[0]); - for (SubscriptionInfoEntity info : availableInfoArray) { - deleteAllInfoBySubId(info.subId); - } - - } else if (availableInfoList != null) { - SubscriptionInfo[] infoArray = availableInfoList.toArray(new SubscriptionInfo[0]); - for (SubscriptionInfo subInfo : infoArray) { - mSubscriptionInfoMap.remove(subInfo.getSubscriptionId()); + if ((availableInfoList == null || availableInfoList.size() == 0) + && mAvailableSubInfoEntityList.size() != 0) { if (DEBUG) { - Log.d(TAG, "insert subInfo to subInfoEntity, subInfo = " + subInfo); + Log.d(TAG, "availableSudInfoList from framework is empty, remove all subs"); } - if (subInfo.isEmbedded() - && subInfo.getProfileClass() == PROFILE_CLASS_PROVISIONING) { - if (DEBUG) { - Log.d(TAG, "Do not insert the provision eSIM"); - } - continue; - } - insertSubInfo(mContext, subInfo); - } - if (!mSubscriptionInfoMap.isEmpty()) { - Iterator iterator = mSubscriptionInfoMap.keySet().iterator(); - while (iterator.hasNext()) { - deleteAllInfoBySubId(String.valueOf(iterator.next())); + for (SubscriptionInfoEntity info : availableInfoArray) { + deleteAllInfoBySubId(info.subId); + } + + } else if (availableInfoList != null) { + SubscriptionInfo[] infoArray = availableInfoList.toArray(new SubscriptionInfo[0]); + // Remove the redundant subInfo + if (availableInfoList.size() <= mAvailableSubInfoEntityList.size()) { + for (SubscriptionInfo subInfo : infoArray) { + int subId = subInfo.getSubscriptionId(); + if (mSubscriptionInfoMap.containsKey(subId)) { + mSubscriptionInfoMap.remove(subId); + } + } + + if (!mSubscriptionInfoMap.isEmpty()) { + for (Integer key : mSubscriptionInfoMap.keySet()) { + if (key != null) { + deleteAllInfoBySubId(String.valueOf(key)); + } + } + } + } + + // Insert all new available subInfo to database. + for (SubscriptionInfo subInfo : infoArray) { + if (DEBUG) { + Log.d(TAG, "insert subInfo to subInfoEntity, subInfo = " + subInfo); + } + if (subInfo.isEmbedded() + && subInfo.getProfileClass() == PROFILE_CLASS_PROVISIONING) { + if (DEBUG) { + Log.d(TAG, "Do not insert the provision eSIM"); + } + continue; + } + mSubscriptionInfoMap.put(mSubId, subInfo); + insertSubInfo(mContext, subInfo); } } - } + }); } public boolean isAirplaneModeOn() { diff --git a/src/com/android/settings/network/MobileNetworkSummaryController.java b/src/com/android/settings/network/MobileNetworkSummaryController.java index 0e2ea0906c1..a2fb986ec58 100644 --- a/src/com/android/settings/network/MobileNetworkSummaryController.java +++ b/src/com/android/settings/network/MobileNetworkSummaryController.java @@ -41,7 +41,6 @@ import com.android.settingslib.RestrictedPreference; import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; -import com.android.settingslib.mobile.dataservice.DataServiceUtils; import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity; import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; import com.android.settingslib.mobile.dataservice.UiccInfoEntity; @@ -203,10 +202,8 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController @Override public void onAvailableSubInfoChanged(List subInfoEntityList) { - if (DataServiceUtils.shouldUpdateEntityList(mSubInfoEntityList, subInfoEntityList)) { - mSubInfoEntityList = subInfoEntityList; - update(); - } + mSubInfoEntityList = subInfoEntityList; + update(); } @Override @@ -215,19 +212,14 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController @Override public void onAllUiccInfoChanged(List uiccInfoEntityList) { - if (DataServiceUtils.shouldUpdateEntityList(mUiccInfoEntityList, uiccInfoEntityList)) { - mUiccInfoEntityList = uiccInfoEntityList; - update(); - } + mUiccInfoEntityList = uiccInfoEntityList; + update(); } @Override public void onAllMobileNetworkInfoChanged( List mobileNetworkInfoEntityList) { - if (DataServiceUtils.shouldUpdateEntityList(mMobileNetworkInfoEntityList, - mobileNetworkInfoEntityList)) { - mMobileNetworkInfoEntityList = mobileNetworkInfoEntityList; - update(); - } + mMobileNetworkInfoEntityList = mobileNetworkInfoEntityList; + update(); } } diff --git a/src/com/android/settings/network/NetworkProviderCallsSmsController.java b/src/com/android/settings/network/NetworkProviderCallsSmsController.java index 7867095de85..1fb2ebc5d2c 100644 --- a/src/com/android/settings/network/NetworkProviderCallsSmsController.java +++ b/src/com/android/settings/network/NetworkProviderCallsSmsController.java @@ -37,7 +37,6 @@ import com.android.settingslib.RestrictedPreference; import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; -import com.android.settingslib.mobile.dataservice.DataServiceUtils; import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity; import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; import com.android.settingslib.mobile.dataservice.UiccInfoEntity; @@ -224,10 +223,8 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl @Override public void onActiveSubInfoChanged(List activeSubInfoList) { - if (DataServiceUtils.shouldUpdateEntityList(mSubInfoEntityList, activeSubInfoList)) { - mSubInfoEntityList = activeSubInfoList; - update(); - } + mSubInfoEntityList = activeSubInfoList; + update(); } @Override diff --git a/src/com/android/settings/network/NetworkProviderSimListController.java b/src/com/android/settings/network/NetworkProviderSimListController.java index 0e4fec52966..0b58846519a 100644 --- a/src/com/android/settings/network/NetworkProviderSimListController.java +++ b/src/com/android/settings/network/NetworkProviderSimListController.java @@ -38,7 +38,6 @@ import com.android.settingslib.RestrictedPreference; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; -import com.android.settingslib.mobile.dataservice.DataServiceUtils; import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity; import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; import com.android.settingslib.mobile.dataservice.UiccInfoEntity; @@ -178,11 +177,9 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll @Override public void onAvailableSubInfoChanged(List subInfoEntityList) { - if (DataServiceUtils.shouldUpdateEntityList(mSubInfoEntityList, subInfoEntityList)) { - mSubInfoEntityList = subInfoEntityList; - mPreferenceCategory.setVisible(isAvailable()); - update(); - } + mSubInfoEntityList = subInfoEntityList; + mPreferenceCategory.setVisible(isAvailable()); + update(); } @Override diff --git a/src/com/android/settings/network/telephony/DefaultSubscriptionController.java b/src/com/android/settings/network/telephony/DefaultSubscriptionController.java index 6eab13232e1..f36831d49ae 100644 --- a/src/com/android/settings/network/telephony/DefaultSubscriptionController.java +++ b/src/com/android/settings/network/telephony/DefaultSubscriptionController.java @@ -38,7 +38,6 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; import com.android.settings.network.MobileNetworkRepository; import com.android.settingslib.core.lifecycle.Lifecycle; -import com.android.settingslib.mobile.dataservice.DataServiceUtils; import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity; import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; import com.android.settingslib.mobile.dataservice.UiccInfoEntity; @@ -308,11 +307,9 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere @Override public void onActiveSubInfoChanged(List subInfoEntityList) { - if (DataServiceUtils.shouldUpdateEntityList(mSubInfoEntityList, subInfoEntityList)) { - mSubInfoEntityList = subInfoEntityList; - updateEntries(); - refreshSummary(mPreference); - } + mSubInfoEntityList = subInfoEntityList; + updateEntries(); + refreshSummary(mPreference); } @Override diff --git a/src/com/android/settings/network/telephony/MobileDataPreferenceController.java b/src/com/android/settings/network/telephony/MobileDataPreferenceController.java index 1f17d5e854f..3fcc25981f2 100644 --- a/src/com/android/settings/network/telephony/MobileDataPreferenceController.java +++ b/src/com/android/settings/network/telephony/MobileDataPreferenceController.java @@ -40,7 +40,6 @@ import com.android.settings.network.MobileDataContentObserver; import com.android.settings.network.MobileNetworkRepository; import com.android.settings.wifi.WifiPickerTrackerHelper; import com.android.settingslib.core.lifecycle.Lifecycle; -import com.android.settingslib.mobile.dataservice.DataServiceUtils; import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity; import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; import com.android.settingslib.mobile.dataservice.UiccInfoEntity; @@ -243,21 +242,18 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon @Override public void onActiveSubInfoChanged(List subInfoEntityList) { - if (DataServiceUtils.shouldUpdateEntityList(mSubscriptionInfoEntityList, - subInfoEntityList)) { - mSubscriptionInfoEntityList = subInfoEntityList; - mSubscriptionInfoEntityList.forEach(entity -> { - if (Integer.parseInt(entity.subId) == mSubId) { - mSubscriptionInfoEntity = entity; - } - }); - if (mSubscriptionInfoEntity != null - && mSubscriptionInfoEntity.isDefaultDataSubscription) { - mDefaultSubId = Integer.parseInt(mSubscriptionInfoEntity.subId); + mSubscriptionInfoEntityList = subInfoEntityList; + mSubscriptionInfoEntityList.forEach(entity -> { + if (Integer.parseInt(entity.subId) == mSubId) { + mSubscriptionInfoEntity = entity; } - update(); - refreshSummary(mPreference); + }); + if (mSubscriptionInfoEntity != null + && mSubscriptionInfoEntity.isDefaultDataSubscription) { + mDefaultSubId = Integer.parseInt(mSubscriptionInfoEntity.subId); } + update(); + refreshSummary(mPreference); } @Override @@ -267,17 +263,14 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon @Override public void onAllMobileNetworkInfoChanged( List mobileNetworkInfoEntityList) { - if (DataServiceUtils.shouldUpdateEntityList(mMobileNetworkInfoEntityList, - mobileNetworkInfoEntityList)) { - mMobileNetworkInfoEntityList = mobileNetworkInfoEntityList; - mMobileNetworkInfoEntityList.forEach(entity -> { - if (Integer.parseInt(entity.subId) == mSubId) { - mMobileNetworkInfoEntity = entity; - update(); - refreshSummary(mPreference); - return; - } - }); - } + mMobileNetworkInfoEntityList = mobileNetworkInfoEntityList; + mMobileNetworkInfoEntityList.forEach(entity -> { + if (Integer.parseInt(entity.subId) == mSubId) { + mMobileNetworkInfoEntity = entity; + update(); + refreshSummary(mPreference); + return; + } + }); } } diff --git a/src/com/android/settings/network/telephony/MobileNetworkSettings.java b/src/com/android/settings/network/telephony/MobileNetworkSettings.java index cbd61b168d2..a3981ff47b4 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkSettings.java +++ b/src/com/android/settings/network/telephony/MobileNetworkSettings.java @@ -49,7 +49,6 @@ import com.android.settings.network.telephony.gsm.OpenNetworkSelectPagePreferenc import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.wifi.WifiPickerTrackerHelper; import com.android.settingslib.core.AbstractPreferenceController; -import com.android.settingslib.mobile.dataservice.DataServiceUtils; import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity; import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; import com.android.settingslib.mobile.dataservice.UiccInfoEntity; @@ -474,35 +473,32 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings impleme @Override public void onAvailableSubInfoChanged(List subInfoEntityList) { - if (DataServiceUtils.shouldUpdateEntityList(mSubInfoEntityList, subInfoEntityList)) { + // Check the current subId is existed or not, if so, finish it. + if (!mSubscriptionInfoMap.isEmpty()) { - // Check the current subId is existed or not, if so, finish it. - if (!mSubscriptionInfoMap.isEmpty()) { - - // Check each subInfo and remove it in the map based on the new list. - for (SubscriptionInfoEntity entity : subInfoEntityList) { - mSubscriptionInfoMap.remove(Integer.parseInt(entity.subId)); - } - - Iterator iterator = mSubscriptionInfoMap.keySet().iterator(); - while (iterator.hasNext()) { - if (iterator.next() == mSubId) { - finishFragment(); - return; - } - } + // Check each subInfo and remove it in the map based on the new list. + for (SubscriptionInfoEntity entity : subInfoEntityList) { + mSubscriptionInfoMap.remove(Integer.parseInt(entity.subId)); } - mSubInfoEntityList = subInfoEntityList; - mSubInfoEntityList.forEach(entity -> { - int subId = Integer.parseInt(entity.subId); - mSubscriptionInfoMap.put(subId, entity); - if (subId == mSubId) { - mSubscriptionInfoEntity = entity; - onSubscriptionDetailChanged(); + Iterator iterator = mSubscriptionInfoMap.keySet().iterator(); + while (iterator.hasNext()) { + if (iterator.next() == mSubId) { + finishFragment(); + return; } - }); + } } + + mSubInfoEntityList = subInfoEntityList; + mSubInfoEntityList.forEach(entity -> { + int subId = Integer.parseInt(entity.subId); + mSubscriptionInfoMap.put(subId, entity); + if (subId == mSubId) { + mSubscriptionInfoEntity = entity; + onSubscriptionDetailChanged(); + } + }); } @Override diff --git a/src/com/android/settings/network/telephony/RoamingPreferenceController.java b/src/com/android/settings/network/telephony/RoamingPreferenceController.java index 2ed7d7929bc..9243c99a49f 100644 --- a/src/com/android/settings/network/telephony/RoamingPreferenceController.java +++ b/src/com/android/settings/network/telephony/RoamingPreferenceController.java @@ -40,7 +40,6 @@ import com.android.settings.network.GlobalSettingsChangeListener; import com.android.settings.network.MobileNetworkRepository; import com.android.settingslib.RestrictedSwitchPreference; import com.android.settingslib.core.lifecycle.Lifecycle; -import com.android.settingslib.mobile.dataservice.DataServiceUtils; import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity; import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; import com.android.settingslib.mobile.dataservice.UiccInfoEntity; @@ -257,17 +256,14 @@ public class RoamingPreferenceController extends TelephonyTogglePreferenceContro @Override public void onAllMobileNetworkInfoChanged( List mobileNetworkInfoEntityList) { - if (DataServiceUtils.shouldUpdateEntityList(mMobileNetworkInfoEntityList, - mobileNetworkInfoEntityList)) { - mMobileNetworkInfoEntityList = mobileNetworkInfoEntityList; - mMobileNetworkInfoEntityList.forEach(entity -> { - if (Integer.parseInt(entity.subId) == mSubId) { - mMobileNetworkInfoEntity = entity; - update(); - refreshSummary(mSwitchPreference); - return; - } - }); - } + mMobileNetworkInfoEntityList = mobileNetworkInfoEntityList; + mMobileNetworkInfoEntityList.forEach(entity -> { + if (Integer.parseInt(entity.subId) == mSubId) { + mMobileNetworkInfoEntity = entity; + update(); + refreshSummary(mSwitchPreference); + return; + } + }); } }