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 {
|
WifiDialog.WifiDialogListener {
|
||||||
|
|
||||||
private static final String TAG = "WifiSettings";
|
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;
|
/* package */ static final int MENU_ID_WPS_PBC = Menu.FIRST;
|
||||||
private static final int MENU_ID_WPS_PIN = Menu.FIRST + 1;
|
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);
|
mConfigureWifiSettingsPreference = findPreference(PREF_KEY_CONFIGURE_WIFI_SETTINGS);
|
||||||
mSavedNetworksPreference = findPreference(PREF_KEY_SAVED_NETWORKS);
|
mSavedNetworksPreference = findPreference(PREF_KEY_SAVED_NETWORKS);
|
||||||
|
|
||||||
|
// Hide additional settings until access points are shown during onStart
|
||||||
|
showAdditionalSettings(false);
|
||||||
|
|
||||||
Context prefContext = getPrefContext();
|
Context prefContext = getPrefContext();
|
||||||
mAddPreference = new Preference(prefContext);
|
mAddPreference = new Preference(prefContext);
|
||||||
mAddPreference.setIcon(R.drawable.ic_menu_add_inset);
|
mAddPreference.setIcon(R.drawable.ic_menu_add_inset);
|
||||||
@@ -220,6 +224,17 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
mBgThread.start();
|
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
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
mBgThread.quit();
|
mBgThread.quit();
|
||||||
@@ -335,6 +350,17 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
mWifiEnabler = createWifiEnabler();
|
mWifiEnabler = createWifiEnabler();
|
||||||
|
|
||||||
mWifiTracker.startTracking();
|
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) {
|
if (mWifiEnabler != null) {
|
||||||
mWifiEnabler.resume(activity);
|
mWifiEnabler.resume(activity);
|
||||||
}
|
}
|
||||||
|
|
||||||
activity.invalidateOptionsMenu();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -370,6 +394,7 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
mWifiTracker.stopTracking();
|
mWifiTracker.stopTracking();
|
||||||
getView().removeCallbacks(mUpdateAccessPointsRunnable);
|
getView().removeCallbacks(mUpdateAccessPointsRunnable);
|
||||||
getView().removeCallbacks(mHideProgressBarRunnable);
|
getView().removeCallbacks(mHideProgressBarRunnable);
|
||||||
|
showAdditionalSettings(false);
|
||||||
super.onStop();
|
super.onStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -733,7 +758,7 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
removeCachedPrefs(mAccessPointsPreferenceCategory);
|
removeCachedPrefs(mAccessPointsPreferenceCategory);
|
||||||
mAddPreference.setOrder(index);
|
mAddPreference.setOrder(index);
|
||||||
mAccessPointsPreferenceCategory.addPreference(mAddPreference);
|
mAccessPointsPreferenceCategory.addPreference(mAddPreference);
|
||||||
setConfigureWifiSettingsVisibility();
|
setAdditionalSettingsSummaries();
|
||||||
|
|
||||||
if (!hasAvailableAccessPoints) {
|
if (!hasAvailableAccessPoints) {
|
||||||
setProgressBarVisible(true);
|
setProgressBarVisible(true);
|
||||||
@@ -812,8 +837,8 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
// in the Wifi Network Details Fragment
|
// in the Wifi Network Details Fragment
|
||||||
pref.getAccessPoint().saveWifiState(pref.getExtras());
|
pref.getAccessPoint().saveWifiState(pref.getExtras());
|
||||||
pref.setFragment(WifiNetworkDetailsFragment.class.getName());
|
pref.setFragment(WifiNetworkDetailsFragment.class.getName());
|
||||||
|
|
||||||
pref.refresh();
|
pref.refresh();
|
||||||
|
|
||||||
mConnectedAccessPointPreferenceCategory.addPreference(pref);
|
mConnectedAccessPointPreferenceCategory.addPreference(pref);
|
||||||
mConnectedAccessPointPreferenceCategory.setVisible(true);
|
mConnectedAccessPointPreferenceCategory.setVisible(true);
|
||||||
}
|
}
|
||||||
@@ -824,7 +849,7 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
mConnectedAccessPointPreferenceCategory.setVisible(false);
|
mConnectedAccessPointPreferenceCategory.setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setConfigureWifiSettingsVisibility() {
|
private void setAdditionalSettingsSummaries() {
|
||||||
mAdditionalSettingsPreferenceCategory.addPreference(mConfigureWifiSettingsPreference);
|
mAdditionalSettingsPreferenceCategory.addPreference(mConfigureWifiSettingsPreference);
|
||||||
boolean wifiWakeupEnabled = Settings.Global.getInt(
|
boolean wifiWakeupEnabled = Settings.Global.getInt(
|
||||||
getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED, 0) == 1;
|
getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED, 0) == 1;
|
||||||
|
Reference in New Issue
Block a user