Fix startup jank in the Wifi Picker.
Synchronously fetch the latest APs during onResume and show these before displaying the other wifi preferences. This fixes a visibile shuffling issue. Additional Setting preferences are now programatically added during onStart and hidden during onStop in order to avoid the animation delay which causes a shuffling effect. Bug: b/36406983 Test: Visual inspection. Animation jank is difficult to programatically test. Change-Id: I34b2d737a8e72e1dc296c170f753975fafce7a3e
This commit is contained in:
@@ -90,6 +90,7 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
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 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
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 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
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 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
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 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
if (mWifiEnabler != null) {
|
||||
mWifiEnabler.resume(activity);
|
||||
}
|
||||
|
||||
activity.invalidateOptionsMenu();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -370,6 +394,7 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
mWifiTracker.stopTracking();
|
||||
getView().removeCallbacks(mUpdateAccessPointsRunnable);
|
||||
getView().removeCallbacks(mHideProgressBarRunnable);
|
||||
showAdditionalSettings(false);
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
@@ -733,7 +758,7 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
removeCachedPrefs(mAccessPointsPreferenceCategory);
|
||||
mAddPreference.setOrder(index);
|
||||
mAccessPointsPreferenceCategory.addPreference(mAddPreference);
|
||||
setConfigureWifiSettingsVisibility();
|
||||
setAdditionalSettingsSummaries();
|
||||
|
||||
if (!hasAvailableAccessPoints) {
|
||||
setProgressBarVisible(true);
|
||||
@@ -812,8 +837,8 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
// 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 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
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;
|
||||
|
Reference in New Issue
Block a user