[Settings] Code refactor

Move some work out of constructor of
EnabledNetworkModePreferenceController.
Which could avoid callbacks before init() been invoked.

Bug: 141833767
Test: make RunSettingsRoboTests -j
ROBOTEST_FILTER=Enhanced4gBasePreferenceControllerTest
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=EnabledNetworkModePreferenceControllerTest
Change-Id: I11f25d130a746c75184a21a8991177b02ad237f0

Change-Id: I6aa58a8d9d15b1524bf03f425e3eae3a0254593e
This commit is contained in:
Bonian Chen
2020-05-04 11:36:55 +08:00
parent 37c795af3a
commit d231727e3b
2 changed files with 32 additions and 14 deletions

View File

@@ -61,19 +61,6 @@ public class EnabledNetworkModePreferenceController extends
public EnabledNetworkModePreferenceController(Context context, String key) { public EnabledNetworkModePreferenceController(Context context, String key) {
super(context, key); super(context, key);
mPreferredNetworkModeObserver = new PreferredNetworkModeContentObserver(
new Handler(Looper.getMainLooper()));
mPreferredNetworkModeObserver.setPreferredNetworkModeChangedListener(
() -> updatePreference());
}
private void updatePreference() {
if (mPreferenceScreen != null) {
displayPreference(mPreferenceScreen);
}
if (mPreference != null) {
updateState(mPreference);
}
} }
@Override @Override
@@ -100,11 +87,17 @@ public class EnabledNetworkModePreferenceController extends
@OnLifecycleEvent(ON_START) @OnLifecycleEvent(ON_START)
public void onStart() { public void onStart() {
if (mPreferredNetworkModeObserver == null) {
return;
}
mPreferredNetworkModeObserver.register(mContext, mSubId); mPreferredNetworkModeObserver.register(mContext, mSubId);
} }
@OnLifecycleEvent(ON_STOP) @OnLifecycleEvent(ON_STOP)
public void onStop() { public void onStop() {
if (mPreferredNetworkModeObserver == null) {
return;
}
mPreferredNetworkModeObserver.unregister(mContext); mPreferredNetworkModeObserver.unregister(mContext);
} }
@@ -151,9 +144,25 @@ public class EnabledNetworkModePreferenceController extends
mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class); mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class);
mBuilder = new PreferenceEntriesBuilder(mContext, mSubId); mBuilder = new PreferenceEntriesBuilder(mContext, mSubId);
if (mPreferredNetworkModeObserver == null) {
mPreferredNetworkModeObserver = new PreferredNetworkModeContentObserver(
new Handler(Looper.getMainLooper()));
mPreferredNetworkModeObserver.setPreferredNetworkModeChangedListener(
() -> updatePreference());
}
lifecycle.addObserver(this); lifecycle.addObserver(this);
} }
private void updatePreference() {
if (mPreferenceScreen != null) {
displayPreference(mPreferenceScreen);
}
if (mPreference != null) {
updateState(mPreference);
}
}
private final static class PreferenceEntriesBuilder { private final static class PreferenceEntriesBuilder {
private CarrierConfigManager mCarrierConfigManager; private CarrierConfigManager mCarrierConfigManager;
private Context mContext; private Context mContext;

View File

@@ -69,10 +69,13 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
public Enhanced4gBasePreferenceController(Context context, String key) { public Enhanced4gBasePreferenceController(Context context, String key) {
super(context, key); super(context, key);
m4gLteListeners = new ArrayList<>(); m4gLteListeners = new ArrayList<>();
mPhoneStateListener = new PhoneCallStateListener();
} }
public Enhanced4gBasePreferenceController init(int subId) { public Enhanced4gBasePreferenceController init(int subId) {
if (mPhoneStateListener == null) {
mPhoneStateListener = new PhoneCallStateListener();
}
if (mSubId == subId) { if (mSubId == subId) {
return this; return this;
} }
@@ -122,11 +125,17 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
@Override @Override
public void onStart() { public void onStart() {
if (mPhoneStateListener == null) {
return;
}
mPhoneStateListener.register(mContext, mSubId); mPhoneStateListener.register(mContext, mSubId);
} }
@Override @Override
public void onStop() { public void onStop() {
if (mPhoneStateListener == null) {
return;
}
mPhoneStateListener.unregister(); mPhoneStateListener.unregister();
} }