From 52d7a9602083a2c51f1cee9f61627a01bd7b894d Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Sun, 19 Apr 2020 22:11:09 +0800 Subject: [PATCH] [Settings] Refactor for performance Refactor DataDuringCallsPreferenceController in order to reduce the time spend on constuct and initialize DataDuringCallsPreferenceController. Bug: 141833767 Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=DataDuringCallsPreferenceControllerTest Change-Id: I484cafa739f9e6e58427894712f2bb7e2ed1f4ff --- .../DataDuringCallsPreferenceController.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java b/src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java index 1137e06f0eb..625f86303b4 100644 --- a/src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java +++ b/src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java @@ -49,10 +49,6 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen public DataDuringCallsPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); - mChangeListener = new SubscriptionsChangeListener(mContext, this); - mMobileDataContentObserver = new MobileDataContentObserver( - new Handler(Looper.getMainLooper())); - mMobileDataContentObserver.setOnMobileDataChangedListener(()->refreshPreference()); } public void init(Lifecycle lifecycle, int subId) { @@ -63,14 +59,26 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen @OnLifecycleEvent(ON_RESUME) public void onResume() { + if (mChangeListener == null) { + mChangeListener = new SubscriptionsChangeListener(mContext, this); + } mChangeListener.start(); + if (mMobileDataContentObserver == null) { + mMobileDataContentObserver = new MobileDataContentObserver( + new Handler(Looper.getMainLooper())); + mMobileDataContentObserver.setOnMobileDataChangedListener(() -> refreshPreference()); + } mMobileDataContentObserver.register(mContext, mSubId); } @OnLifecycleEvent(ON_PAUSE) public void onPause() { - mChangeListener.stop(); - mMobileDataContentObserver.unRegister(mContext); + if (mChangeListener != null) { + mChangeListener.stop(); + } + if (mMobileDataContentObserver != null) { + mMobileDataContentObserver.unRegister(mContext); + } } @Override @@ -103,6 +111,9 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen @Override public void updateState(Preference preference) { super.updateState(preference); + if (preference == null) { + return; + } preference.setVisible(isAvailable()); }