Merge "Dashboard performance work" into nyc-dev

am: 04b25af149

* commit '04b25af149ba8e4c38cfe17fe9caf246a598e8e3':
  Dashboard performance work

Change-Id: I41c9443c997428924b5ef6df2ad632c06bd416a8
This commit is contained in:
Jason Monk
2016-05-09 13:40:54 +00:00
committed by android-build-merger
4 changed files with 90 additions and 34 deletions

View File

@@ -17,6 +17,7 @@
package com.android.settings.dashboard;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.util.Log;
@@ -34,6 +35,7 @@ import com.android.settings.dashboard.conditional.Condition;
import com.android.settings.dashboard.conditional.ConditionAdapterUtils;
import com.android.settings.dashboard.conditional.ConditionManager;
import com.android.settings.dashboard.conditional.FocusRecyclerView;
import com.android.settingslib.HelpUtils;
import com.android.settingslib.SuggestionParser;
import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.SettingsDrawerActivity;
@@ -67,6 +69,7 @@ public class DashboardSummary extends InstrumentedFragment
private ConditionManager mConditionManager;
private SuggestionParser mSuggestionParser;
private LinearLayoutManager mLayoutManager;
private SuggestionsChecks mSuggestionsChecks;
@Override
protected int getMetricsCategory() {
@@ -85,6 +88,7 @@ public class DashboardSummary extends InstrumentedFragment
mConditionManager = ConditionManager.get(context);
mSuggestionParser = new SuggestionParser(context,
context.getSharedPreferences(SUGGESTIONS, 0), R.xml.suggestion_ordering);
mSuggestionsChecks = new SuggestionsChecks(getContext());
if (DEBUG_TIMING) Log.d(TAG, "onCreate took " + (System.currentTimeMillis() - startTime)
+ " ms");
}
@@ -107,9 +111,11 @@ public class DashboardSummary extends InstrumentedFragment
MetricsLogger.visible(getContext(), c.getMetricsConstant());
}
}
for (Tile suggestion : mAdapter.getSuggestions()) {
MetricsLogger.action(getContext(), MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION,
DashboardAdapter.getSuggestionIdentifier(getContext(), suggestion));
if (mAdapter.getSuggestions() != null) {
for (Tile suggestion : mAdapter.getSuggestions()) {
MetricsLogger.action(getContext(), MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION,
DashboardAdapter.getSuggestionIdentifier(getContext(), suggestion));
}
}
if (DEBUG_TIMING) Log.d(TAG, "onResume took " + (System.currentTimeMillis() - startTime)
+ " ms");
@@ -189,17 +195,12 @@ public class DashboardSummary extends InstrumentedFragment
return;
}
long start = System.currentTimeMillis();
// TODO: Cache summaries from old categories somehow.
List<DashboardCategory> categories =
((SettingsActivity) getActivity()).getDashboardCategories();
mAdapter.setCategories(categories);
// recheck to see if any suggestions have been changed.
mAdapter.setSuggestions(mSuggestionParser);
long delta = System.currentTimeMillis() - start;
Log.d(TAG, "rebuildUI took: " + delta + " ms");
new SuggestionLoader().execute();
}
@Override
@@ -212,4 +213,24 @@ public class DashboardSummary extends InstrumentedFragment
Log.d(TAG, "onConditionsChanged");
mAdapter.setConditions(mConditionManager.getConditions());
}
private class SuggestionLoader extends AsyncTask<Void, Void, List<Tile>> {
@Override
protected List<Tile> doInBackground(Void... params) {
List<Tile> suggestions = mSuggestionParser.getSuggestions();
for (int i = 0; i < suggestions.size(); i++) {
if (mSuggestionsChecks.isSuggestionComplete(suggestions.get(i))) {
mAdapter.disableSuggestion(suggestions.get(i));
suggestions.remove(i--);
}
}
return suggestions;
}
@Override
protected void onPostExecute(List<Tile> tiles) {
mAdapter.setSuggestions(tiles, mSuggestionParser);
}
}
}