WidgetTray performance improvement (less sorting): Part 1
- No longer return sorted list from the package manager since, the only
time the widget list requires to be sorted is when recycler view renders
them.
- Made getWidgetsAndShortcuts private to guarantee that widgets are
being loaded in the worker thread.
Change-Id: I2c35973c1226e831514380dd38fc2f88b1b91d02
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 2ef5d0a..efe27ad 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -3584,14 +3584,13 @@
* in onResume.
*
* This needs to be called from incoming places where resources might have been loaded
- * while we are paused. That is becaues the Configuration might be wrong
- * when we're not running, and if it comes back to what it was when we
- * were paused, we are not restarted.
+ * while the activity is paused. That is because the Configuration (e.g., rotation) might be
+ * wrong when we're not running, and if the activity comes back to what the configuration was
+ * when we were paused, activity is not restarted.
*
* Implementation of the method from LauncherModel.Callbacks.
*
- * @return true if we are currently paused. The caller might be able to
- * skip some work in that case since we will come back again.
+ * @return {@code true} if we are currently paused. The caller might be able to skip some work
*/
private boolean waitUntilResume(Runnable run, boolean deletePreviousRunnables) {
if (mPaused) {
@@ -4135,10 +4134,6 @@
if (mAppsView != null) {
mAppsView.setApps(apps);
}
- if (mWidgetsView != null) {
- mWidgetsView.addWidgets(LauncherModel.getSortedWidgetsAndShortcuts(this, false),
- getPackageManager());
- }
if (mLauncherCallbacks != null) {
mLauncherCallbacks.bindAllApplications(apps);
}
@@ -4274,26 +4269,23 @@
}
}
- /**
- * A number of packages were updated.
- */
@Thunk ArrayList<Object> mWidgetsAndShortcuts;
private Runnable mBindPackagesUpdatedRunnable = new Runnable() {
public void run() {
- bindPackagesUpdated(mWidgetsAndShortcuts);
- mWidgetsAndShortcuts = null;
+ bindAllPackages(mWidgetsAndShortcuts);
}
};
- public void bindPackagesUpdated(final ArrayList<Object> widgetsAndShortcuts) {
+ @Override
+ public void bindAllPackages(final ArrayList<Object> widgetsAndShortcuts) {
if (waitUntilResume(mBindPackagesUpdatedRunnable, true)) {
mWidgetsAndShortcuts = widgetsAndShortcuts;
return;
}
- if (mWidgetsView != null) {
- mWidgetsView.addWidgets(LauncherModel.getSortedWidgetsAndShortcuts(this, false),
- getPackageManager());
+ if (mWidgetsView != null && widgetsAndShortcuts != null) {
+ mWidgetsView.addWidgets(widgetsAndShortcuts, getPackageManager());
+ mWidgetsAndShortcuts = null;
}
}