Merge "Preventing unnecessary options update to QSB provider by checking if the options have changed before calling update" into ub-launcher3-calgary

This commit is contained in:
Sunny Goyal
2016-05-19 22:54:22 +00:00
committed by Android (Google) Code Review
2 changed files with 26 additions and 1 deletions

View File

@@ -3552,7 +3552,12 @@ public class Launcher extends Activity
if (widgetId != -1) {
mQsb = mAppWidgetHost.createView(this, widgetId, searchProvider);
mQsb.setId(R.id.qsb_widget);
mQsb.updateAppWidgetOptions(opts);
if (!Utilities.containsAll(
AppWidgetManager.getInstance(this).getAppWidgetOptions(widgetId), opts)) {
// Launcher should not be updating the options often.
FileLog.d(TAG, "Options for QSB were not same");
mQsb.updateAppWidgetOptions(opts);
}
mQsb.setPadding(0, 0, 0, 0);
mSearchDropTargetBar.addView(mQsb);
mSearchDropTargetBar.setQsbSearchBar(mQsb);

View File

@@ -868,6 +868,26 @@ public final class Utilities {
}
}
/**
* Returns true if {@param original} contains all entries defined in {@param updates} and
* have the same value.
* The comparison uses {@link Object#equals(Object)} to compare the values.
*/
public static boolean containsAll(Bundle original, Bundle updates) {
for (String key : updates.keySet()) {
Object value1 = updates.get(key);
Object value2 = original.get(key);
if (value1 == null) {
if (value2 != null) {
return false;
}
} else if (!value1.equals(value2)) {
return false;
}
}
return true;
}
/**
* An extension of {@link BitmapDrawable} which returns the bitmap pixel size as intrinsic size.
* This allows the badging to be done based on the action bitmap size rather than