diff options
author | Winson Chung <winsonc@google.com> | 2019-06-17 22:34:33 -0700 |
---|---|---|
committer | Winson Chung <winsonc@google.com> | 2019-06-26 14:01:56 -0700 |
commit | 0b70cd4ca4bf56e6afba243e60029f5791868047 (patch) | |
tree | cd15338cdce893f03969a202fa398ae14f4f2754 /src | |
parent | a730a233b8b5d70ae535cd18a9084626253dfb9b (diff) | |
download | android_packages_apps_Trebuchet-0b70cd4ca4bf56e6afba243e60029f5791868047.tar.gz android_packages_apps_Trebuchet-0b70cd4ca4bf56e6afba243e60029f5791868047.tar.bz2 android_packages_apps_Trebuchet-0b70cd4ca4bf56e6afba243e60029f5791868047.zip |
Finish recents animation when starting a new activity
- Defer starting the activity when an activity is paused, and finish
the current animation to trigger launcher to be resumed
Bug: 132811175
Test: Swipe up and launch a new app
Change-Id: I78b76800052512eb93f69ccf0523f4d752a82ece
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher3/Launcher.java | 27 | ||||
-rw-r--r-- | src/com/android/launcher3/SecondaryDropTarget.java | 2 |
2 files changed, 20 insertions, 9 deletions
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index ad2783e0c..d9af4da8e 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -244,7 +244,7 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, @Thunk boolean mWorkspaceLoading = true; - private OnResumeCallback mOnResumeCallback; + private ArrayList<OnResumeCallback> mOnResumeCallbacks = new ArrayList<>(); private ViewOnDrawExecutor mPendingExecutor; @@ -869,6 +869,7 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, @Override protected void onStop() { super.onStop(); + if (mLauncherCallbacks != null) { mLauncherCallbacks.onStop(); } @@ -951,7 +952,10 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, mHandler.removeCallbacks(mHandleDeferredResume); Utilities.postAsyncCallback(mHandler, mHandleDeferredResume); - setOnResumeCallback(null); + for (OnResumeCallback cb : mOnResumeCallbacks) { + cb.onLauncherResume(); + } + mOnResumeCallbacks.clear(); if (mLauncherCallbacks != null) { mLauncherCallbacks.onResume(); @@ -1805,6 +1809,16 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, android.util.Log.d(TestProtocol.NO_START_TAG, "startActivitySafely outer"); } + + if (!hasBeenResumed()) { + // Workaround an issue where the WM launch animation is clobbered when finishing the + // recents animation into launcher. Defer launching the activity until Launcher is + // next resumed. + addOnResumeCallback(() -> startActivitySafely(v, intent, item, sourceContainer)); + UiFactory.clearSwipeSharedState(true /* finishAnimation */); + return true; + } + boolean success = super.startActivitySafely(v, intent, item, sourceContainer); if (success && v instanceof BubbleTextView) { // This is set to the view that launched the activity that navigated the user away @@ -1813,7 +1827,7 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, // state when we return to launcher. BubbleTextView btv = (BubbleTextView) v; btv.setStayPressed(true); - setOnResumeCallback(btv); + addOnResumeCallback(btv); } return success; } @@ -1861,11 +1875,8 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, return result; } - public void setOnResumeCallback(OnResumeCallback callback) { - if (mOnResumeCallback != null) { - mOnResumeCallback.onLauncherResume(); - } - mOnResumeCallback = callback; + public void addOnResumeCallback(OnResumeCallback callback) { + mOnResumeCallbacks.add(callback); } /** diff --git a/src/com/android/launcher3/SecondaryDropTarget.java b/src/com/android/launcher3/SecondaryDropTarget.java index 0cf6e44c6..55cb6f214 100644 --- a/src/com/android/launcher3/SecondaryDropTarget.java +++ b/src/com/android/launcher3/SecondaryDropTarget.java @@ -179,7 +179,7 @@ public class SecondaryDropTarget extends ButtonDropTarget implements OnAlarmList DeferredOnComplete deferred = (DeferredOnComplete) d.dragSource; if (target != null) { deferred.mPackageName = target.getPackageName(); - mLauncher.setOnResumeCallback(deferred); + mLauncher.addOnResumeCallback(deferred); } else { deferred.sendFailure(); } |