From fdbf748dc0308d6f1968fd2d832df325b6c77160 Mon Sep 17 00:00:00 2001 From: Mill Chen Date: Wed, 4 May 2022 17:51:10 +0800 Subject: [PATCH] Ensure loading all apps once in ManageApplications Some pages that extend ManageApplications always display a loading spinner when entering them. This is caused by that it takes over 100 ms to load all apps and to sort the apps. In addition, the task of loading all apps might be invoked twice, which caused loading time increasing. This CL is to make sure the task of loading all apps execute only once in those pages that extend ManageApplications. Bug: 222985623 Test: manual test Change-Id: I3b15bf2eee2a4c220f42da39a29f0014cc620898 --- .../applications/AppStateBaseBridge.java | 17 ++++++++++++++--- .../SpecialAppAccessPreferenceController.java | 2 +- .../manageapplications/ManageApplications.java | 2 +- .../premiumsms/PremiumSmsAccess.java | 2 +- .../settings/datausage/DataSaverSummary.java | 2 +- ...estrictedDataAccessPreferenceController.java | 2 +- 6 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/com/android/settings/applications/AppStateBaseBridge.java b/src/com/android/settings/applications/AppStateBaseBridge.java index 1a39483af9a..d7f253b6c0b 100644 --- a/src/com/android/settings/applications/AppStateBaseBridge.java +++ b/src/com/android/settings/applications/AppStateBaseBridge.java @@ -36,6 +36,8 @@ public abstract class AppStateBaseBridge implements ApplicationsState.Callbacks protected final BackgroundHandler mHandler; protected final MainHandler mMainHandler; + private boolean mForceLoadAllApps; + public AppStateBaseBridge(ApplicationsState appState, Callback callback) { mAppState = appState; mAppSession = mAppState != null ? mAppState.newSession(this) : null; @@ -48,13 +50,22 @@ public abstract class AppStateBaseBridge implements ApplicationsState.Callbacks mMainHandler = new MainHandler(Looper.getMainLooper()); } - public void resume() { + public void resume(boolean forceLoadAllApps) { + mForceLoadAllApps = forceLoadAllApps; mHandler.sendEmptyMessage(BackgroundHandler.MSG_LOAD_ALL); - mAppSession.onResume(); + if (mForceLoadAllApps) { + mAppSession.onResume(); + } else { + mAppSession.activateSession(); + } } public void pause() { - mAppSession.onPause(); + if (mForceLoadAllApps) { + mAppSession.onPause(); + } else { + mAppSession.deactivateSession(); + } } public void release() { diff --git a/src/com/android/settings/applications/SpecialAppAccessPreferenceController.java b/src/com/android/settings/applications/SpecialAppAccessPreferenceController.java index 19b8f504840..42f5930ed62 100644 --- a/src/com/android/settings/applications/SpecialAppAccessPreferenceController.java +++ b/src/com/android/settings/applications/SpecialAppAccessPreferenceController.java @@ -74,7 +74,7 @@ public class SpecialAppAccessPreferenceController extends BasePreferenceControll @Override public void onStart() { - mDataUsageBridge.resume(); + mDataUsageBridge.resume(true /* forceLoadAllApps */); } @Override diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java index 062bfc576b2..d5fba682ed2 100644 --- a/src/com/android/settings/applications/manageapplications/ManageApplications.java +++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java @@ -1176,7 +1176,7 @@ public class ManageApplications extends InstrumentedFragment mSession.onResume(); mLastSortMode = sort; if (mExtraInfoBridge != null) { - mExtraInfoBridge.resume(); + mExtraInfoBridge.resume(false /* forceLoadAllApps */); } rebuild(); } else { diff --git a/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccess.java b/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccess.java index 3df19beeec6..54ac63ebca5 100644 --- a/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccess.java +++ b/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccess.java @@ -74,7 +74,7 @@ public class PremiumSmsAccess extends EmptyTextSettings @Override public void onResume() { super.onResume(); - mSmsBackend.resume(); + mSmsBackend.resume(true /* forceLoadAllApps */); } @Override diff --git a/src/com/android/settings/datausage/DataSaverSummary.java b/src/com/android/settings/datausage/DataSaverSummary.java index 2e52e38e58f..744f692bcb0 100644 --- a/src/com/android/settings/datausage/DataSaverSummary.java +++ b/src/com/android/settings/datausage/DataSaverSummary.java @@ -83,7 +83,7 @@ public class DataSaverSummary extends SettingsPreferenceFragment mDataSaverBackend.refreshAllowlist(); mDataSaverBackend.refreshDenylist(); mDataSaverBackend.addListener(this); - mDataUsageBridge.resume(); + mDataUsageBridge.resume(true /* forceLoadAllApps */); } @Override diff --git a/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceController.java b/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceController.java index ac088c037e0..06cf8eda6d2 100644 --- a/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceController.java +++ b/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceController.java @@ -91,7 +91,7 @@ public class UnrestrictedDataAccessPreferenceController extends BasePreferenceCo @Override public void onStart() { - mDataUsageBridge.resume(); + mDataUsageBridge.resume(true /* forceLoadAllApps */); } @Override