diff --git a/src/com/android/launcher3/model/LoaderTask.java b/src/com/android/launcher3/model/LoaderTask.java index 90aaf4443b..9e6282e270 100644 --- a/src/com/android/launcher3/model/LoaderTask.java +++ b/src/com/android/launcher3/model/LoaderTask.java @@ -851,20 +851,23 @@ public class LoaderTask implements Runnable { } private List loadCachedPredictions() { - List componentKeys = mApp.getPredictionModel().getPredictionComponentKeys(); - List results = new ArrayList<>(); - if (componentKeys == null) return results; - List l; - mBgDataModel.cachedPredictedItems.clear(); - for (ComponentKey key : componentKeys) { - l = mLauncherApps.getActivityList(key.componentName.getPackageName(), key.user); - if (l.size() == 0) continue; - boolean quietMode = mUserManager.isQuietModeEnabled(key.user); - AppInfo info = new AppInfo(l.get(0), key.user, quietMode); - mBgDataModel.cachedPredictedItems.add(info); - mIconCache.getTitleAndIcon(info, false); + synchronized (mBgDataModel) { + List componentKeys = + mApp.getPredictionModel().getPredictionComponentKeys(); + List results = new ArrayList<>(); + if (componentKeys == null) return results; + List l; + mBgDataModel.cachedPredictedItems.clear(); + for (ComponentKey key : componentKeys) { + l = mLauncherApps.getActivityList(key.componentName.getPackageName(), key.user); + if (l.size() == 0) continue; + boolean quietMode = mUserManager.isQuietModeEnabled(key.user); + AppInfo info = new AppInfo(l.get(0), key.user, quietMode); + mBgDataModel.cachedPredictedItems.add(info); + mIconCache.getTitleAndIcon(info, false); + } + return results; } - return results; } private List loadAllApps() { diff --git a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java index 192e69fed0..480b29f9c9 100644 --- a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java +++ b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java @@ -37,6 +37,8 @@ import android.os.Debug; import android.os.Process; import android.os.RemoteException; import android.os.StrictMode; +import android.os.UserHandle; +import android.os.UserManager; import android.util.Log; import androidx.test.InstrumentationRegistry; @@ -276,6 +278,15 @@ public abstract class AbstractLauncherUiTest { mTargetContext = InstrumentationRegistry.getTargetContext(); mTargetPackage = mTargetContext.getPackageName(); mLauncherPid = mLauncher.getPid(); + + UserManager userManager = mTargetContext.getSystemService(UserManager.class); + if (userManager != null) { + for (UserHandle userHandle : userManager.getUserProfiles()) { + if (!userHandle.isSystem()) { + mDevice.executeShellCommand("pm remove-user " + userHandle.getIdentifier()); + } + } + } } @After