diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2018-02-15 10:27:42 -0800 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2018-02-15 10:31:50 -0800 |
commit | a1b4911e2606c5b9f36d0692f0bd0856c6e24683 (patch) | |
tree | 2d57af95d059c2b5b75b900e6cf7c014de3e4865 /src/com/android/launcher3/model/ModelPreload.java | |
parent | c36d6eefaef62290312fb5e1f6f53ec163551d82 (diff) | |
download | android_packages_apps_Trebuchet-a1b4911e2606c5b9f36d0692f0bd0856c6e24683.tar.gz android_packages_apps_Trebuchet-a1b4911e2606c5b9f36d0692f0bd0856c6e24683.tar.bz2 android_packages_apps_Trebuchet-a1b4911e2606c5b9f36d0692f0bd0856c6e24683.zip |
Synchronizing loader preload to avoid launcher getting stuck in loading state,
which could be caused by the following sequence of events
1) Starts preload => execution moved to background thread
a) check if loader is running
... execution moved to ui thread
2) Launcher starts
3) Cancels any running loader and starts a new loader
.... Execution on background thread
b) Cancels any running loader and starts a new loader
Synchronizing (3), and [a, b] under same lock would avoid this case
Bug: 73399920
Change-Id: I6b01f797fd6f4a2e5b3c078bb374ad40fcc311c8
Diffstat (limited to 'src/com/android/launcher3/model/ModelPreload.java')
-rw-r--r-- | src/com/android/launcher3/model/ModelPreload.java | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/src/com/android/launcher3/model/ModelPreload.java b/src/com/android/launcher3/model/ModelPreload.java index 6f33bedb0..f186e9572 100644 --- a/src/com/android/launcher3/model/ModelPreload.java +++ b/src/com/android/launcher3/model/ModelPreload.java @@ -49,11 +49,8 @@ public class ModelPreload implements ModelUpdateTask { @Override public final void run() { - if (!mModel.isModelLoaded()) { - Log.d(TAG, "Workspace not loaded, loading now"); - mModel.startLoaderForResults( - new LoaderResults(mApp, mBgDataModel, mAllAppsList, 0, null)); - } + mModel.startLoaderForResultsIfNotLoaded( + new LoaderResults(mApp, mBgDataModel, mAllAppsList, 0, null)); Log.d(TAG, "Preload completed : " + mModel.isModelLoaded()); onComplete(mModel.isModelLoaded()); } |