diff options
| author | 2018-12-11 00:28:21 +0000 | |
|---|---|---|
| committer | 2018-12-11 00:28:21 +0000 | |
| commit | 832c17330e2d0ce52f1471404ef539a63f120ca2 (patch) | |
| tree | 5c0f5a2b6ee519dcf162ada0b293831ca795f28e | |
| parent | 7a9127a5b590f672d458ad1251e572b76536d659 (diff) | |
| parent | 934420353154cb9e694f49dd1d5f5267d971e8dc (diff) | |
Merge "When creating a stack for the recents animation, ensure it is not top most"
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityStarter.java | 3 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/RecentsAnimation.java | 17 |
2 files changed, 15 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index 4538d361ccfe..57bfc2979636 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -2506,8 +2506,9 @@ class ActivityStarter { // full resolution. mLaunchParams.mPreferredDisplayId = mPreferredDisplayId != DEFAULT_DISPLAY ? mPreferredDisplayId : INVALID_DISPLAY; + final boolean onTop = aOptions == null || !aOptions.getAvoidMoveToFront(); final ActivityStack stack = - mRootActivityContainer.getLaunchStack(r, aOptions, task, ON_TOP, mLaunchParams); + mRootActivityContainer.getLaunchStack(r, aOptions, task, onTop, mLaunchParams); mLaunchParams.mPreferredDisplayId = mPreferredDisplayId; return stack; } diff --git a/services/core/java/com/android/server/wm/RecentsAnimation.java b/services/core/java/com/android/server/wm/RecentsAnimation.java index 86fcf6455d71..42cd8e864322 100644 --- a/services/core/java/com/android/server/wm/RecentsAnimation.java +++ b/services/core/java/com/android/server/wm/RecentsAnimation.java @@ -107,7 +107,7 @@ class RecentsAnimation implements RecentsAnimationCallbacks, && recentsComponent.equals(intent.getComponent()) ? ACTIVITY_TYPE_RECENTS : ACTIVITY_TYPE_HOME; - final ActivityStack targetStack = mDefaultDisplay.getStack(WINDOWING_MODE_UNDEFINED, + ActivityStack targetStack = mDefaultDisplay.getStack(WINDOWING_MODE_UNDEFINED, mTargetActivityType); ActivityRecord targetActivity = getTargetActivity(targetStack, intent.getComponent()); final boolean hasExistingActivity = targetActivity != null; @@ -153,7 +153,7 @@ class RecentsAnimation implements RecentsAnimationCallbacks, "startRecentsActivity"); } } else { - // No recents activity + // No recents activity, create the new recents activity bottom most ActivityOptions options = ActivityOptions.makeBasic(); options.setLaunchActivityType(mTargetActivityType); options.setAvoidMoveToFront(); @@ -166,11 +166,20 @@ class RecentsAnimation implements RecentsAnimationCallbacks, .setActivityOptions(SafeActivityOptions.fromBundle(options.toBundle())) .setMayWait(userId) .execute(); - mWindowManager.prepareAppTransition(TRANSIT_NONE, false); - mWindowManager.executeAppTransition(); + // Move the recents activity into place for the animation targetActivity = mDefaultDisplay.getStack(WINDOWING_MODE_UNDEFINED, mTargetActivityType).getTopActivity(); + targetStack = targetActivity.getActivityStack(); + mDefaultDisplay.moveStackBehindBottomMostVisibleStack(targetStack); + if (DEBUG) { + Slog.d(TAG, "Moved stack=" + targetStack + " behind stack=" + + mDefaultDisplay.getStackAbove(targetStack)); + } + + mWindowManager.prepareAppTransition(TRANSIT_NONE, false); + mWindowManager.executeAppTransition(); + // TODO: Maybe wait for app to draw in this particular case? |