Return mSynchronouslyBoundPages as getPagesToBindSynchronously between onInitialBindCompleteand finishBindingItems
- Otherwise it'll return wrong currentPage value, as currentPage aren't updated until finishBindingItems
- There is still problem that wallpaper jumps to page 0 and then to the desired page: https://drive.google.com/file/d/132Sq5oRZKRclhdh1Ls1RaHNEVXJQcrxC/view?usp=sharing&resourcekey=0-l2N9NWtZ8FqfaVT0bVGVqw
Bug: 191657065
Test: manual
Change-Id: I7ec167b617a8f59865e959d9dd677256b1ab4ef9
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 4d5cc5e..7fa8d16 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -2094,8 +2094,16 @@
@Override
public IntSet getPagesToBindSynchronously(IntArray orderedScreenIds) {
- IntSet visibleIds = mPagesToBindSynchronously.isEmpty()
- ? mWorkspace.getCurrentPageScreenIds() : mPagesToBindSynchronously;
+ IntSet visibleIds;
+ if (!mPagesToBindSynchronously.isEmpty()) {
+ visibleIds = mPagesToBindSynchronously;
+ } else if (!mWorkspaceLoading) {
+ visibleIds = mWorkspace.getCurrentPageScreenIds();
+ } else {
+ // If workspace binding is still in progress, getCurrentPageScreenIds won't be accurate,
+ // and we should use mSynchronouslyBoundPages that's set during initial binding.
+ visibleIds = mSynchronouslyBoundPages;
+ }
IntArray actualIds = new IntArray();
IntSet result = new IntSet();