Skip redundant SuggestionLoader run during app start.
also skip DiffUtil when drawing first frame. Fix: 34103984 Test: make RunSettingsRoboTests Change-Id: I4891d1bca1f17c437444761eaf3002624934014d
This commit is contained in:
@@ -63,6 +63,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
||||
private final MetricsFeatureProvider mMetricsFeatureProvider;
|
||||
private final DashboardFeatureProvider mDashboardFeatureProvider;
|
||||
private SuggestionParser mSuggestionParser;
|
||||
private boolean mFirstFrameDrawn;
|
||||
|
||||
@VisibleForTesting
|
||||
DashboardData mDashboardData;
|
||||
@@ -162,6 +163,15 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
||||
notifyDashboardDataChanged(prevData);
|
||||
}
|
||||
|
||||
public void setCategory(List<DashboardCategory> category) {
|
||||
final DashboardData prevData = mDashboardData;
|
||||
Log.d(TAG, "adapter setCategory called");
|
||||
mDashboardData = new DashboardData.Builder(prevData)
|
||||
.setCategories(category)
|
||||
.build();
|
||||
notifyDashboardDataChanged(prevData);
|
||||
}
|
||||
|
||||
public void setConditions(List<Condition> conditions) {
|
||||
final DashboardData prevData = mDashboardData;
|
||||
Log.d(TAG, "adapter setConditions called");
|
||||
@@ -304,11 +314,12 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
||||
}
|
||||
|
||||
private void notifyDashboardDataChanged(DashboardData prevData) {
|
||||
if (prevData != null) {
|
||||
if (mFirstFrameDrawn && prevData != null) {
|
||||
final DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(new DashboardData
|
||||
.ItemsDataDiffCallback(prevData.getItemList(), mDashboardData.getItemList()));
|
||||
diffResult.dispatchUpdatesTo(this);
|
||||
} else {
|
||||
mFirstFrameDrawn = true;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user