Merge "[Settings] Refactor for performance" into rvc-dev
diff --git a/src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java b/src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java
index 1137e06..625f863 100644
--- a/src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java
+++ b/src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java
@@ -49,10 +49,6 @@
     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 @@
 
     @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 @@
     @Override
     public void updateState(Preference preference) {
         super.updateState(preference);
+        if (preference == null) {
+            return;
+        }
         preference.setVisible(isAvailable());
     }