From 680b064b293888ea47a6211943b51bee3adfb70d Mon Sep 17 00:00:00 2001 From: Fabrice Di Meglio Date: Tue, 20 May 2014 15:19:29 -0700 Subject: [PATCH] Optimize categories loading and refresh See bug: #15091992 Opening sub activities in settings is very slow Change-Id: I6e2e7a07fed72f35850da0614adaafde94618a4e --- src/com/android/settings/SettingsActivity.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index 7b0c18d9dcb..5b7895053be 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -477,9 +477,6 @@ public class SettingsActivity extends Activity mDisplayHomeAsUpEnabled = savedState.getBoolean(SAVE_KEY_SHOW_HOME_AS_UP); } else { - // We need to build the Categories in all cases - buildDashboardCategories(mCategories); - if (!mIsShowingDashboard) { final ComponentName cn = getIntent().getComponent(); // No UP is we are launched thru a Settings shortcut @@ -494,6 +491,9 @@ public class SettingsActivity extends Activity switchToFragment( initialFragmentName, initialArguments, true, false, mInitialTitle, false); } else { + // We need to build the Categories in all cases + buildDashboardCategories(mCategories); + // No UP if we are displaying the main Dashboard mDisplayHomeAsUpEnabled = false; if (mCategories.size() > 0) { @@ -634,8 +634,6 @@ public class SettingsActivity extends Activity mDevelopmentPreferences.registerOnSharedPreferenceChangeListener( mDevelopmentPreferencesListener); - invalidateCategories(); - registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); mDynamicIndexableContentMonitor.register(this); @@ -651,17 +649,17 @@ public class SettingsActivity extends Activity unregisterReceiver(mBatteryInfoReceiver); - mDevelopmentPreferences.unregisterOnSharedPreferenceChangeListener( - mDevelopmentPreferencesListener); - - mDevelopmentPreferencesListener = null; - mDynamicIndexableContentMonitor.unregister(); } @Override public void onDestroy() { super.onDestroy(); + + mDevelopmentPreferences.unregisterOnSharedPreferenceChangeListener( + mDevelopmentPreferencesListener); + mDevelopmentPreferencesListener = null; + if (mListeningToAccountUpdates) { AccountManager.get(this).removeOnAccountsUpdatedListener(this); }