From f9256b41f2dcee6ba1e2642a46d9416e26616397 Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Wed, 11 Nov 2020 16:19:50 +0800 Subject: [PATCH] [Settings] Reduce the operation of VoLTE config redraw There're 3 VoLTE configuration UIs sharing the same configuration, but only 1 of them will be displayed. The 3 classes extending Enhanced4gBasePreferenceController are: 1. Enhanced4gAdvancedCallingPreferenceController 2. Enhanced4gCallingPreferenceController 3. Enhanced4gLtePreferenceController They're different in the value of getMode(). The design within Enhanced4gBasePreferenceController only allows to show one of them. Which means, the other two don't need to register for PhoneStateListener and should ignore actions in response to it when receiving callback from PhoneStateListener. Through detecting the VoLTE configuration mode, some operations could be avoided. This fix is targeting to avoid these operations from happening. Bug: 172987488 Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=Enhanced4gBasePreferenceControllerTest Merged-In: I56d4900b5bcb189693c99e870b013da97ed283db (cherry picked from commit d2e22f4cee710ca34a964f5d03e36a92935120ed) Change-Id: I92e4b84b81622548fb356a4c7af99668bd2a9e00 --- .../telephony/Enhanced4gBasePreferenceController.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java index dc915af2d06..f6db3702f10 100644 --- a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java +++ b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java @@ -128,7 +128,7 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc @Override public void onStart() { - if (mPhoneStateListener == null) { + if (!isModeMatched() || (mPhoneStateListener == null)) { return; } mPhoneStateListener.register(mContext, mSubId); @@ -237,7 +237,9 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc public void unregister() { mCallState = null; - mTelephonyManager.listen(this, PhoneStateListener.LISTEN_NONE); + if (mTelephonyManager != null) { + mTelephonyManager.listen(this, PhoneStateListener.LISTEN_NONE); + } } }