Cancel the existing recents animation before any initialization
- In the rare case that we are canceling the recents animation as a
part of starting another recents animation, ensure that we do it
before we move the target activity to be visible, otherwise the
cancelation will undo the previous work.
Bug: 193851085
Test: atest RecentsAnimationControllerTest
Change-Id: I22589a034eab3b1fab10f4b677f777b282305bbd
Merged-In: I22589a034eab3b1fab10f4b677f777b282305bbd
(cherry picked from commit 4ebdbc9db1)
This commit is contained in:
committed by
Tony Wickham
parent
2555c0e410
commit
7d6151c61e
@@ -164,6 +164,13 @@ class RecentsAnimation implements RecentsAnimationCallbacks, OnRootTaskOrderChan
|
||||
ProtoLog.d(WM_DEBUG_RECENTS_ANIMATIONS, "startRecentsActivity(): intent=%s", mTargetIntent);
|
||||
Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "RecentsAnimation#startRecentsActivity");
|
||||
|
||||
// Cancel any existing recents animation running synchronously (do not hold the
|
||||
// WM lock) before starting the newly requested recents animation as they can not coexist
|
||||
if (mWindowManager.getRecentsAnimationController() != null) {
|
||||
mWindowManager.getRecentsAnimationController().forceCancelAnimation(
|
||||
REORDER_MOVE_TO_ORIGINAL_POSITION, "startRecentsActivity");
|
||||
}
|
||||
|
||||
// If the activity is associated with the root recents task, then try and get that first
|
||||
Task targetRootTask = mDefaultTaskDisplayArea.getRootTask(WINDOWING_MODE_UNDEFINED,
|
||||
mTargetActivityType);
|
||||
@@ -237,12 +244,7 @@ class RecentsAnimation implements RecentsAnimationCallbacks, OnRootTaskOrderChan
|
||||
targetActivity.intent.replaceExtras(mTargetIntent);
|
||||
|
||||
// Fetch all the surface controls and pass them to the client to get the animation
|
||||
// started. Cancel any existing recents animation running synchronously (do not hold the
|
||||
// WM lock)
|
||||
if (mWindowManager.getRecentsAnimationController() != null) {
|
||||
mWindowManager.getRecentsAnimationController().forceCancelAnimation(
|
||||
REORDER_MOVE_TO_ORIGINAL_POSITION, "startRecentsActivity");
|
||||
}
|
||||
// started
|
||||
mWindowManager.initializeRecentsAnimation(mTargetActivityType, recentsAnimationRunner,
|
||||
this, mDefaultTaskDisplayArea.getDisplayId(),
|
||||
mTaskSupervisor.mRecentTasks.getRecentTaskIds(), targetActivity);
|
||||
|
||||
Reference in New Issue
Block a user