Reduce jank in wifi settings

- Fix view recycling for AccessPointPreferences by adding a dummy
   during initial inflation
 - Cut down on what is done during onBindView and refresh()
 - Try to re-use AccessPointPreferences when possible

Some jank still occurs when scan results come in, but it is less
than before.

Bug: 16518752
Change-Id: I2619303281dd50aa3864783c49738ae9f221834a
This commit is contained in:
Jason Monk
2015-06-29 13:28:21 -04:00
parent 52dce9d334
commit 55dd8869db
4 changed files with 79 additions and 47 deletions

View File

@@ -16,19 +16,12 @@
package com.android.settings.wifi;
import android.app.AppGlobals;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.RemoteException;
import android.os.UserHandle;
import android.preference.Preference;
import android.preference.PreferenceScreen;
import android.util.Log;
@@ -39,12 +32,13 @@ import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settings.search.SearchIndexableRaw;
import com.android.settings.wifi.AccessPointPreference.UserBadgeCache;
import com.android.settingslib.wifi.AccessPoint;
import com.android.settingslib.wifi.WifiTracker;
import java.util.Collections;
import java.util.Comparator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
@@ -60,6 +54,8 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
private Bundle mAccessPointSavedState;
private AccessPoint mSelectedAccessPoint;
private UserBadgeCache mUserBadgeCache;
// Instance state key
private static final String SAVE_DIALOG_ACCESS_POINT_STATE = "wifi_ap_state";
@@ -72,6 +68,7 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.wifi_display_saved_access_points);
mUserBadgeCache = new UserBadgeCache(getPackageManager());
}
@Override
@@ -113,7 +110,7 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
final int accessPointsSize = accessPoints.size();
for (int i = 0; i < accessPointsSize; ++i){
AccessPointPreference preference = new AccessPointPreference(accessPoints.get(i),
context, true);
context, mUserBadgeCache, true);
preference.setIcon(null);
preferenceScreen.addPreference(preference);
}