[Settings] 1.Clean up unnecessary callback 2. register listener and

manager by subId

Bug: 269742364
Test: manual
Change-Id: Id536dedb200385dc6de5697848f8a68f2302351f
This commit is contained in:
Zoey Chen
2023-02-17 10:16:06 +00:00
parent 15ba200a81
commit 5645c092a9
10 changed files with 72 additions and 139 deletions

View File

@@ -240,17 +240,4 @@ public class InternetPreferenceController extends AbstractPreferenceController i
mSubInfoEntityList = subInfoEntityList;
updateState(mPreference);
}
@Override
public void onActiveSubInfoChanged(List<SubscriptionInfoEntity> activeSubInfoList) {
}
@Override
public void onAllUiccInfoChanged(List<UiccInfoEntity> uiccInfoEntityList) {
}
@Override
public void onAllMobileNetworkInfoChanged(
List<MobileNetworkInfoEntity> mobileNetworkInfoEntityList) {
}
}

View File

@@ -32,6 +32,7 @@ import android.os.Looper;
import android.provider.Settings;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyManager;
import android.telephony.UiccCardInfo;
import android.telephony.UiccPortInfo;
@@ -52,6 +53,7 @@ import com.android.settingslib.mobile.dataservice.UiccInfoEntity;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
@@ -92,8 +94,7 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions
private Uri mAirplaneModeSettingUri;
private MetricsFeatureProvider mMetricsFeatureProvider;
private IntentFilter mFilter = new IntentFilter();
private MobileDataContentObserver mDataContentObserver;
private Map<Integer, MobileDataContentObserver> mDataContentObserverMap = new HashMap<>();
private int mPhysicalSlotIndex = SubscriptionManager.INVALID_SIM_SLOT_INDEX;
private int mLogicalSlotIndex = SubscriptionManager.INVALID_SIM_SLOT_INDEX;
private int mCardState = UiccSlotInfo.CARD_STATE_INFO_ABSENT;
@@ -104,6 +105,8 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions
private boolean mIsRemovable = false;
private boolean mIsActive = false;
private Map<Integer, SubscriptionInfo> mSubscriptionInfoMap = new ArrayMap<>();
private Map<Integer, TelephonyManager> mTelephonyManagerMap = new HashMap<>();
private Map<Integer, PhoneCallStateTelephonyCallback> mTelephonyCallbackMap = new HashMap<>();
public static MobileNetworkRepository create(Context context,
MobileNetworkCallback mobileNetworkCallback) {
@@ -130,13 +133,6 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions
mMobileNetworkInfoDao = mMobileNetworkDatabase.mMobileNetworkInfoDao();
mAirplaneModeObserver = new AirplaneModeObserver(new Handler(Looper.getMainLooper()));
mAirplaneModeSettingUri = Settings.Global.getUriFor(Settings.Global.AIRPLANE_MODE_ON);
mDataContentObserver = new MobileDataContentObserver(
new Handler(Looper.getMainLooper()));
mDataContentObserver.setOnMobileDataChangedListener(() -> {
sExecutor.execute(() -> {
insertMobileNetworkInfo(context, String.valueOf(mSubId));
});
});
mFilter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
mFilter.addAction(SubscriptionManager.ACTION_DEFAULT_SUBSCRIPTION_CHANGED);
mFilter.addAction(ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED);
@@ -175,24 +171,68 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions
public void addRegister(LifecycleOwner lifecycleOwner) {
mSubscriptionManager.addOnSubscriptionsChangedListener(mContext.getMainExecutor(), this);
mAirplaneModeObserver.register(mContext);
if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
mDataContentObserver.register(mContext, mSubId);
}
mContext.registerReceiver(mDataSubscriptionChangedReceiver, mFilter);
observeAllSubInfo(lifecycleOwner);
observeAllUiccInfo(lifecycleOwner);
observeAllMobileNetworkInfo(lifecycleOwner);
}
private void addRegisterBySubId(int subId) {
if (!mTelephonyCallbackMap.containsKey(subId)) {
PhoneCallStateTelephonyCallback
telephonyCallback = new PhoneCallStateTelephonyCallback();
mTelephonyManager.registerTelephonyCallback(mContext.getMainExecutor(),
telephonyCallback);
mTelephonyCallbackMap.put(subId, telephonyCallback);
mTelephonyManagerMap.put(subId, mTelephonyManager);
}
if (!mDataContentObserverMap.containsKey(subId)) {
MobileDataContentObserver dataContentObserver = new MobileDataContentObserver(
new Handler(Looper.getMainLooper()));
dataContentObserver.register(mContext, subId);
dataContentObserver.setOnMobileDataChangedListener(() -> {
sExecutor.execute(() -> {
insertMobileNetworkInfo(mContext, String.valueOf(subId));
});
});
mDataContentObserverMap.put(subId, dataContentObserver);
}
}
private void removerRegisterBySubId(int subId) {
if (mTelephonyCallbackMap.containsKey(subId)) {
TelephonyManager tm = mTelephonyManagerMap.get(subId);
PhoneCallStateTelephonyCallback callback = mTelephonyCallbackMap.get(subId);
if (callback != null) {
tm.unregisterTelephonyCallback(callback);
mTelephonyCallbackMap.remove(subId);
}
}
if (mDataContentObserverMap.containsKey(subId)) {
mDataContentObserverMap.get(subId).unRegister(mContext);
mDataContentObserverMap.remove(subId);
}
}
public void removeRegister() {
mSubscriptionManager.removeOnSubscriptionsChangedListener(this);
if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
mDataContentObserver.unRegister(mContext);
}
mAirplaneModeObserver.unRegister(mContext);
if (mDataSubscriptionChangedReceiver != null) {
mContext.unregisterReceiver(mDataSubscriptionChangedReceiver);
}
mDataContentObserverMap.forEach((id, observer) -> {
observer.unRegister(mContext);
});
mDataContentObserverMap.clear();
mTelephonyManagerMap.forEach((id, manager) -> {
TelephonyCallback callback = mTelephonyCallbackMap.get(manager.getSubscriptionId());
if (callback != null) {
manager.unregisterTelephonyCallback(callback);
}
});
mTelephonyCallbackMap.clear();
mTelephonyManagerMap.clear();
}
private void observeAllSubInfo(LifecycleOwner lifecycleOwner) {
@@ -344,6 +384,7 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions
+ subInfoEntity);
}
mMobileNetworkDatabase.insertSubsInfo(subInfoEntity);
addRegisterBySubId(mSubId);
insertUiccInfo(subId);
insertMobileNetworkInfo(context, subId);
mMetricsFeatureProvider.action(mContext,
@@ -365,7 +406,10 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions
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));
int id = Integer.parseInt(subId);
removerRegisterBySubId(id);
mSubscriptionInfoMap.remove(id);
mTelephonyManagerMap.remove(id);
sCacheSubscriptionInfoEntityMap.remove(subId);
sCacheUiccInfoEntityMap.remove(subId);
sCacheMobileNetworkInfoEntityMap.remove(subId);
@@ -550,6 +594,15 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions
Settings.Global.AIRPLANE_MODE_ON, 0) != 0;
}
private class PhoneCallStateTelephonyCallback extends TelephonyCallback implements
TelephonyCallback.CallStateListener {
@Override
public void onCallStateChanged(int state) {
mCallback.onCallStateChanged(state);
}
}
/**
* Callback for clients to get the latest info changes if the framework or content observers.
* updates the relevant info.
@@ -570,5 +623,8 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions
default void onAirplaneModeChanged(boolean enabled) {
}
default void onCallStateChanged(int state) {
}
}
}

View File

@@ -206,10 +206,6 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
update();
}
@Override
public void onActiveSubInfoChanged(List<SubscriptionInfoEntity> activeSubInfoList) {
}
@Override
public void onAllUiccInfoChanged(List<UiccInfoEntity> uiccInfoEntityList) {
mUiccInfoEntityList = uiccInfoEntityList;

View File

@@ -217,22 +217,9 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
return Utils.isInService(serviceState);
}
@Override
public void onAvailableSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
}
@Override
public void onActiveSubInfoChanged(List<SubscriptionInfoEntity> activeSubInfoList) {
mSubInfoEntityList = activeSubInfoList;
update();
}
@Override
public void onAllUiccInfoChanged(List<UiccInfoEntity> uiccInfoEntityList) {
}
@Override
public void onAllMobileNetworkInfoChanged(
List<MobileNetworkInfoEntity> mobileNetworkInfoEntityList) {
}
}

View File

@@ -171,10 +171,6 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll
return KEY_PREFERENCE_SIM;
}
@Override
public void onAirplaneModeChanged(boolean airplaneModeEnabled) {
}
@Override
public void onAvailableSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
mSubInfoEntityList = subInfoEntityList;
@@ -182,19 +178,6 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll
update();
}
@Override
public void onActiveSubInfoChanged(List<SubscriptionInfoEntity> activeSubInfoList) {
}
@Override
public void onAllUiccInfoChanged(List<UiccInfoEntity> uiccInfoEntityList) {
}
@Override
public void onAllMobileNetworkInfoChanged(
List<MobileNetworkInfoEntity> mobileNetworkInfoEntityList) {
}
@Override
public void updateState(Preference preference) {
super.updateState(preference);

View File

@@ -111,14 +111,6 @@ public class ConvertToEsimPreferenceController extends TelephonyBasePreferenceCo
mSubscriptionInfoEntity = subscriptionInfoEntity;
}
@Override
public void onAirplaneModeChanged(boolean airplaneModeEnabled) {
}
@Override
public void onAvailableSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
}
@Override
public void onActiveSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
// TODO(b/262195754): Need the intent to enabled the feature.
@@ -133,13 +125,4 @@ public class ConvertToEsimPreferenceController extends TelephonyBasePreferenceCo
// });
// }
}
@Override
public void onAllUiccInfoChanged(List<UiccInfoEntity> uiccInfoEntityList) {
}
@Override
public void onAllMobileNetworkInfoChanged(
List<MobileNetworkInfoEntity> mobileNetworkInfoEntityList) {
}
}

View File

@@ -293,18 +293,10 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere
return true;
}
@Override
public void onAirplaneModeChanged(boolean airplaneModeEnabled) {
}
boolean isRtlMode() {
return mIsRtlMode;
}
@Override
public void onAvailableSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
}
@Override
public void onActiveSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
mSubInfoEntityList = subInfoEntityList;
@@ -312,12 +304,5 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere
refreshSummary(mPreference);
}
@Override
public void onAllUiccInfoChanged(List<UiccInfoEntity> uiccInfoEntityList) {
}
@Override
public void onAllMobileNetworkInfoChanged(
List<MobileNetworkInfoEntity> mobileNetworkInfoEntityList) {
}
}

View File

@@ -232,14 +232,6 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
mMobileNetworkInfoEntity = mobileNetworkInfoEntity;
}
@Override
public void onAirplaneModeChanged(boolean airplaneModeEnabled) {
}
@Override
public void onAvailableSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
}
@Override
public void onActiveSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
mSubscriptionInfoEntityList = subInfoEntityList;
@@ -256,9 +248,6 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
refreshSummary(mPreference);
}
@Override
public void onAllUiccInfoChanged(List<UiccInfoEntity> uiccInfoEntityList) {
}
@Override
public void onAllMobileNetworkInfoChanged(

View File

@@ -497,21 +497,4 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings impleme
}
});
}
@Override
public void onActiveSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
}
@Override
public void onAllUiccInfoChanged(List<UiccInfoEntity> uiccInfoEntityList) {
}
@Override
public void onAllMobileNetworkInfoChanged(
List<MobileNetworkInfoEntity> mobileNetworkInfoEntityList) {
}
@Override
public void onAirplaneModeChanged(boolean enabled) {
}
}

View File

@@ -237,22 +237,6 @@ public class RoamingPreferenceController extends TelephonyTogglePreferenceContro
mMobileNetworkInfoEntity = mobileNetworkInfoEntity;
}
@Override
public void onAirplaneModeChanged(boolean airplaneModeEnabled) {
}
@Override
public void onAvailableSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
}
@Override
public void onActiveSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
}
@Override
public void onAllUiccInfoChanged(List<UiccInfoEntity> uiccInfoEntityList) {
}
@Override
public void onAllMobileNetworkInfoChanged(
List<MobileNetworkInfoEntity> mobileNetworkInfoEntityList) {