Merge "Fix startup jank in the Wifi Picker." into oc-dev
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 38f5a43..01551da 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -90,6 +90,7 @@
WifiDialog.WifiDialogListener {
private static final String TAG = "WifiSettings";
+ private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
/* package */ static final int MENU_ID_WPS_PBC = Menu.FIRST;
private static final int MENU_ID_WPS_PIN = Menu.FIRST + 1;
@@ -203,6 +204,9 @@
mConfigureWifiSettingsPreference = findPreference(PREF_KEY_CONFIGURE_WIFI_SETTINGS);
mSavedNetworksPreference = findPreference(PREF_KEY_SAVED_NETWORKS);
+ // Hide additional settings until access points are shown during onStart
+ showAdditionalSettings(false);
+
Context prefContext = getPrefContext();
mAddPreference = new Preference(prefContext);
mAddPreference.setIcon(R.drawable.ic_menu_add_inset);
@@ -220,6 +224,17 @@
mBgThread.start();
}
+ // TODO(b/37429702): Figure out how to temporarily disable animations during startup and remove
+ // this method.
+ private void showAdditionalSettings(boolean visible) {
+ mAdditionalSettingsPreferenceCategory.setVisible(visible);
+ mAdditionalSettingsPreferenceCategory.removeAll();
+ if (visible) {
+ mAdditionalSettingsPreferenceCategory.addPreference(mConfigureWifiSettingsPreference);
+ mAdditionalSettingsPreferenceCategory.addPreference(mSavedNetworksPreference);
+ }
+ }
+
@Override
public void onDestroy() {
mBgThread.quit();
@@ -335,6 +350,17 @@
mWifiEnabler = createWifiEnabler();
mWifiTracker.startTracking();
+
+ if (!isUiRestricted() && mWifiManager.isWifiEnabled()) {
+ setProgressBarVisible(true);
+ mWifiTracker.forceUpdate();
+ if (DEBUG) Log.d(TAG, "WifiSettings onStart APs: " + mWifiTracker.getAccessPoints());
+
+ getView().removeCallbacks(mUpdateAccessPointsRunnable);
+ updateAccessPointPreferences();
+ }
+
+ showAdditionalSettings(true);
}
/**
@@ -353,8 +379,6 @@
if (mWifiEnabler != null) {
mWifiEnabler.resume(activity);
}
-
- activity.invalidateOptionsMenu();
}
@Override
@@ -370,6 +394,7 @@
mWifiTracker.stopTracking();
getView().removeCallbacks(mUpdateAccessPointsRunnable);
getView().removeCallbacks(mHideProgressBarRunnable);
+ showAdditionalSettings(false);
super.onStop();
}
@@ -733,7 +758,7 @@
removeCachedPrefs(mAccessPointsPreferenceCategory);
mAddPreference.setOrder(index);
mAccessPointsPreferenceCategory.addPreference(mAddPreference);
- setConfigureWifiSettingsVisibility();
+ setAdditionalSettingsSummaries();
if (!hasAvailableAccessPoints) {
setProgressBarVisible(true);
@@ -812,8 +837,8 @@
// in the Wifi Network Details Fragment
pref.getAccessPoint().saveWifiState(pref.getExtras());
pref.setFragment(WifiNetworkDetailsFragment.class.getName());
-
pref.refresh();
+
mConnectedAccessPointPreferenceCategory.addPreference(pref);
mConnectedAccessPointPreferenceCategory.setVisible(true);
}
@@ -824,7 +849,7 @@
mConnectedAccessPointPreferenceCategory.setVisible(false);
}
- private void setConfigureWifiSettingsVisibility() {
+ private void setAdditionalSettingsSummaries() {
mAdditionalSettingsPreferenceCategory.addPreference(mConfigureWifiSettingsPreference);
boolean wifiWakeupEnabled = Settings.Global.getInt(
getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED, 0) == 1;