From 8821ca9a6a5bf34308f9b70c2cabf9da17330497 Mon Sep 17 00:00:00 2001 From: Hyunyoung Song Date: Mon, 4 May 2015 16:28:20 -0700 Subject: 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 --- src/com/android/launcher3/WidgetPreviewLoader.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/com/android/launcher3/WidgetPreviewLoader.java') diff --git a/src/com/android/launcher3/WidgetPreviewLoader.java b/src/com/android/launcher3/WidgetPreviewLoader.java index 412cbcd6d..93bfeaffd 100644 --- a/src/com/android/launcher3/WidgetPreviewLoader.java +++ b/src/com/android/launcher3/WidgetPreviewLoader.java @@ -24,6 +24,7 @@ import android.graphics.RectF; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.AsyncTask; +import android.os.Process; import android.util.Log; import android.util.LongSparseArray; @@ -34,6 +35,9 @@ import com.android.launcher3.util.ComponentKey; import com.android.launcher3.util.Thunk; import com.android.launcher3.widget.WidgetCell; +import junit.framework.Assert; + +import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -202,11 +206,14 @@ public class WidgetPreviewLoader { * 2. Any preview for an absent package is removed * This ensures that we remove entries for packages which changed while the launcher was dead. */ - public void removeObsoletePreviews() { + public void removeObsoletePreviews(ArrayList list) { + // This method should always be called from the worker thread. + Assert.assertTrue(LauncherModel.sWorkerThread.getThreadId() == Process.myTid()); + LongSparseArray userIdCache = new LongSparseArray<>(); LongSparseArray> validPackages = new LongSparseArray<>(); - for (Object obj : LauncherModel.getSortedWidgetsAndShortcuts(mContext, false)) { + for (Object obj : list) { final UserHandleCompat user; final String pkg; if (obj instanceof ResolveInfo) { -- cgit v1.2.3