From 17ad56b3fcc082ededc7d1bc218b2b9c2dd4ffb3 Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Wed, 13 May 2020 18:36:23 +0800 Subject: [PATCH] [Settings] Avoid from redraw UI when first time onResume Registration of subscription change lead to redraw. However, entire UI is newly created where redraw is not required when fragment first time created. Therefore, remove first callback from SubscriptionManager to reduce some time. Bug: 141833767 Test: manual Change-Id: I54a58dd8271bb2cd8cd531cc02ff7d64b3e4328c --- .../network/telephony/MobileNetworkSettings.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/network/telephony/MobileNetworkSettings.java b/src/com/android/settings/network/telephony/MobileNetworkSettings.java index 49f7981c28b..528e5c7788b 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkSettings.java +++ b/src/com/android/settings/network/telephony/MobileNetworkSettings.java @@ -73,7 +73,7 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings { private String mClickedPrefKey; private ActiveSubsciptionsListener mActiveSubsciptionsListener; - private boolean mActiveSubsciptionsListenerStarting; + private boolean mDropFirstSubscriptionChangeNotify; private int mActiveSubsciptionsListenerCount; public MobileNetworkSettings() { @@ -207,20 +207,20 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings { public void onResume() { super.onResume(); if (mActiveSubsciptionsListener == null) { - mActiveSubsciptionsListenerStarting = true; mActiveSubsciptionsListener = new ActiveSubsciptionsListener( getContext().getMainLooper(), getContext(), mSubId) { public void onChanged() { onSubscriptionDetailChanged(); } }; - mActiveSubsciptionsListenerStarting = false; + mDropFirstSubscriptionChangeNotify = true; } mActiveSubsciptionsListener.start(); } private void onSubscriptionDetailChanged() { - if (mActiveSubsciptionsListenerStarting) { + if (mDropFirstSubscriptionChangeNotify) { + mDropFirstSubscriptionChangeNotify = false; Log.d(LOG_TAG, "Callback during onResume()"); return; } @@ -235,6 +235,14 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings { }); } + @Override + public void onDestroy() { + if (mActiveSubsciptionsListener != null) { + mActiveSubsciptionsListener.stop(); + } + super.onDestroy(); + } + @VisibleForTesting void onRestoreInstance(Bundle icicle) { if (icicle != null) {