Waiting for a small timeout for launcher draw, before performing the swipe gesture.
This allow for a better synchronized motion, in case launcher draw was fast enough
Change-Id: Ie59aa1e8a2ffa94f3640b4ea08a0c23eeabafb54
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 639fb6c..fcf36ca 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -1256,7 +1256,7 @@
&& AbstractFloatingView.getTopOpenView(this) == null;
boolean isActionMain = Intent.ACTION_MAIN.equals(intent.getAction());
boolean internalStateHandled = InternalStateHandler
- .handleNewIntent(this, intent, alreadyOnHome);
+ .handleNewIntent(this, intent, isStarted());
if (isActionMain) {
if (!internalStateHandled) {
diff --git a/src/com/android/launcher3/states/InternalStateHandler.java b/src/com/android/launcher3/states/InternalStateHandler.java
index 4c3ef4b..7298383 100644
--- a/src/com/android/launcher3/states/InternalStateHandler.java
+++ b/src/com/android/launcher3/states/InternalStateHandler.java
@@ -23,6 +23,7 @@
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.LauncherModel.Callbacks;
+import com.android.launcher3.MainThreadExecutor;
import com.android.launcher3.util.Preconditions;
import java.lang.ref.WeakReference;
@@ -52,9 +53,12 @@
return intent;
}
- public final void initWhenReady() {
- Preconditions.assertUIThread();
+ public final void initWhenReady(MainThreadExecutor executor) {
sPendingHandler = new WeakReference<>(this);
+ executor.execute(this::initIfReadOnUIThread);
+ }
+
+ private void initIfReadOnUIThread() {
LauncherAppState app = LauncherAppState.getInstanceNoCreate();
if (app == null) {
return;
@@ -76,15 +80,15 @@
}
public static boolean handleCreate(Launcher launcher, Intent intent) {
- return handleIntent(launcher, intent, false);
+ return handleIntent(launcher, intent, false, false);
}
public static boolean handleNewIntent(Launcher launcher, Intent intent, boolean alreadyOnHome) {
- return handleIntent(launcher, intent, alreadyOnHome);
+ return handleIntent(launcher, intent, alreadyOnHome, true);
}
private static boolean handleIntent(
- Launcher launcher, Intent intent, boolean alreadyOnHome) {
+ Launcher launcher, Intent intent, boolean alreadyOnHome, boolean explicitIntent) {
boolean result = false;
if (intent != null && intent.getExtras() != null) {
IBinder stateBinder = intent.getExtras().getBinder(EXTRA_STATE_HANDLER);
@@ -96,7 +100,7 @@
result = true;
}
}
- if (!result) {
+ if (!result && !explicitIntent) {
InternalStateHandler pendingHandler = sPendingHandler.get();
if (pendingHandler != null) {
if (!pendingHandler.init(launcher, alreadyOnHome)) {