From d231727e3b6dbe1a03437b6d8ca8b759b60761cc Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Mon, 4 May 2020 11:36:55 +0800 Subject: [PATCH] [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 --- ...nabledNetworkModePreferenceController.java | 35 ++++++++++++------- .../Enhanced4gBasePreferenceController.java | 11 +++++- 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java index 5343709208e..d5a192a5456 100644 --- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java @@ -61,19 +61,6 @@ public class EnabledNetworkModePreferenceController extends public EnabledNetworkModePreferenceController(Context context, String 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 @@ -100,11 +87,17 @@ public class EnabledNetworkModePreferenceController extends @OnLifecycleEvent(ON_START) public void onStart() { + if (mPreferredNetworkModeObserver == null) { + return; + } mPreferredNetworkModeObserver.register(mContext, mSubId); } @OnLifecycleEvent(ON_STOP) public void onStop() { + if (mPreferredNetworkModeObserver == null) { + return; + } mPreferredNetworkModeObserver.unregister(mContext); } @@ -151,9 +144,25 @@ public class EnabledNetworkModePreferenceController extends mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class); mBuilder = new PreferenceEntriesBuilder(mContext, mSubId); + if (mPreferredNetworkModeObserver == null) { + mPreferredNetworkModeObserver = new PreferredNetworkModeContentObserver( + new Handler(Looper.getMainLooper())); + mPreferredNetworkModeObserver.setPreferredNetworkModeChangedListener( + () -> updatePreference()); + } + lifecycle.addObserver(this); } + private void updatePreference() { + if (mPreferenceScreen != null) { + displayPreference(mPreferenceScreen); + } + if (mPreference != null) { + updateState(mPreference); + } + } + private final static class PreferenceEntriesBuilder { private CarrierConfigManager mCarrierConfigManager; private Context mContext; diff --git a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java index 3a91616a3c6..91d01d36a1d 100644 --- a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java +++ b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java @@ -69,10 +69,13 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc public Enhanced4gBasePreferenceController(Context context, String key) { super(context, key); m4gLteListeners = new ArrayList<>(); - mPhoneStateListener = new PhoneCallStateListener(); } public Enhanced4gBasePreferenceController init(int subId) { + if (mPhoneStateListener == null) { + mPhoneStateListener = new PhoneCallStateListener(); + } + if (mSubId == subId) { return this; } @@ -122,11 +125,17 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc @Override public void onStart() { + if (mPhoneStateListener == null) { + return; + } mPhoneStateListener.register(mContext, mSubId); } @Override public void onStop() { + if (mPhoneStateListener == null) { + return; + } mPhoneStateListener.unregister(); }