Lazy fetch the default Carrier Config

Fetching the default Carrier Configs may cause some delay so move them
out of the constructor.

Bug: 188597489
Test: Manual testing
Change-Id: I1c6093ab6f0f59f2c74bcb84c0392eaace6b907e
This commit is contained in:
yinxu
2021-06-07 09:29:20 -07:00
parent 03b86cd11f
commit e39fbace41

View File

@@ -37,20 +37,16 @@ public class CarrierConfigTracker extends BroadcastReceiver {
private final SparseArray<Boolean> mCallStrengthConfigs = new SparseArray<>();
private final SparseArray<Boolean> mNoCallingConfigs = new SparseArray<>();
private final CarrierConfigManager mCarrierConfigManager;
private final boolean mDefaultCallStrengthConfig;
private final boolean mDefaultNoCallingConfig;
private boolean mDefaultCallStrengthConfigLoaded;
private boolean mDefaultCallStrengthConfig;
private boolean mDefaultNoCallingConfigLoaded;
private boolean mDefaultNoCallingConfig;
@Inject
public CarrierConfigTracker(Context context) {
mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class);
context.registerReceiver(
this, new IntentFilter(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED));
mDefaultCallStrengthConfig =
CarrierConfigManager.getDefaultConfig().getBoolean(
CarrierConfigManager.KEY_DISPLAY_CALL_STRENGTH_INDICATOR_BOOL);
mDefaultNoCallingConfig =
CarrierConfigManager.getDefaultConfig().getBoolean(
CarrierConfigManager.KEY_USE_IP_FOR_CALLING_INDICATOR_BOOL);
}
@Override
@@ -81,6 +77,12 @@ public class CarrierConfigTracker extends BroadcastReceiver {
if (mCallStrengthConfigs.indexOfKey(subId) >= 0) {
return mCallStrengthConfigs.get(subId);
}
if (!mDefaultCallStrengthConfigLoaded) {
mDefaultCallStrengthConfig =
CarrierConfigManager.getDefaultConfig().getBoolean(
CarrierConfigManager.KEY_DISPLAY_CALL_STRENGTH_INDICATOR_BOOL);
mDefaultCallStrengthConfigLoaded = true;
}
return mDefaultCallStrengthConfig;
}
@@ -91,6 +93,12 @@ public class CarrierConfigTracker extends BroadcastReceiver {
if (mNoCallingConfigs.indexOfKey(subId) >= 0) {
return mNoCallingConfigs.get(subId);
}
if (!mDefaultNoCallingConfigLoaded) {
mDefaultNoCallingConfig =
CarrierConfigManager.getDefaultConfig().getBoolean(
CarrierConfigManager.KEY_USE_IP_FOR_CALLING_INDICATOR_BOOL);
mDefaultNoCallingConfigLoaded = true;
}
return mDefaultNoCallingConfig;
}
}