diff --git a/src/com/android/settings/network/MobileNetworkRepository.java b/src/com/android/settings/network/MobileNetworkRepository.java
index 5de4c72..42f15c8 100644
--- a/src/com/android/settings/network/MobileNetworkRepository.java
+++ b/src/com/android/settings/network/MobileNetworkRepository.java
@@ -264,8 +264,7 @@
                         mIsActive = portInfo.isActive();
                         mPortIndex = portInfo.getPortIndex();
                     } else if (DEBUG) {
-                        Log.d(TAG,
-                                "Can not get port index and physicalSlotIndex for subId "
+                        Log.d(TAG, "Can not get port index and physicalSlotIndex for subId "
                                         + mSubId);
                     }
                 });
@@ -297,8 +296,7 @@
         setActiveSubInfoList(mActiveSubInfoEntityList);
     }
 
-    private void setActiveSubInfoList(
-            List<SubscriptionInfoEntity> activeSubInfoEntityList) {
+    private void setActiveSubInfoList(List<SubscriptionInfoEntity> activeSubInfoEntityList) {
         if (DEBUG) {
             Log.d(TAG,
                     "onActiveSubInfoChanged, activeSubInfoEntityList = " + activeSubInfoEntityList);
@@ -460,11 +458,16 @@
             if (DEBUG) {
                 Log.d(TAG, "availableSudInfoList from framework is empty, remove all subs");
             }
-            for (SubscriptionInfoEntity info : mAvailableSubInfoEntityList) {
+
+            SubscriptionInfoEntity[] availableInfoArray = mAvailableSubInfoEntityList.toArray(
+                    new SubscriptionInfoEntity[0]);
+            for (SubscriptionInfoEntity info : availableInfoArray) {
                 deleteAllInfoBySubId(info.subId);
             }
+
         } else if (availableInfoList != null) {
-            for (SubscriptionInfo subInfo : availableInfoList) {
+            SubscriptionInfo[] infoArray = availableInfoList.toArray(new SubscriptionInfo[0]);
+            for (SubscriptionInfo subInfo : infoArray) {
                 mSubscriptionInfoMap.remove(subInfo.getSubscriptionId());
                 if (DEBUG) {
                     Log.d(TAG,
diff --git a/src/com/android/settings/network/telephony/MobileNetworkSettings.java b/src/com/android/settings/network/telephony/MobileNetworkSettings.java
index 88c3656..60f35cd 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkSettings.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkSettings.java
@@ -464,10 +464,6 @@
 
     @Override
     public void onAvailableSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
-    }
-
-    @Override
-    public void onActiveSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
         if (DataServiceUtils.shouldUpdateEntityList(mSubInfoEntityList, subInfoEntityList)) {
 
             // Check the current subId is existed or not, if so, finish it.
@@ -500,6 +496,10 @@
     }
 
     @Override
+    public void onActiveSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
+    }
+
+    @Override
     public void onAllUiccInfoChanged(List<UiccInfoEntity> uiccInfoEntityList) {
     }
 
