diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 78887c6d82096..334d75a25c9a0 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -3582,7 +3582,7 @@ class ActivityStack extends ConfigurationContai finishActivityResultsLocked(r, resultCode, resultData); - final boolean endTask = index <= 0; + final boolean endTask = index <= 0 && !task.isClearingToReuseTask(); final int transit = endTask ? TRANSIT_TASK_CLOSE : TRANSIT_ACTIVITY_CLOSE; if (mResumedActivity == r) { if (DEBUG_VISIBILITY || DEBUG_TRANSITION) Slog.v(TAG_TRANSITION, diff --git a/services/core/java/com/android/server/am/TaskRecord.java b/services/core/java/com/android/server/am/TaskRecord.java index 0c2c2043fb15e..0ae36193213b5 100644 --- a/services/core/java/com/android/server/am/TaskRecord.java +++ b/services/core/java/com/android/server/am/TaskRecord.java @@ -1564,6 +1564,13 @@ final class TaskRecord extends ConfigurationContainer implements TaskWindowConta && (mResizeMode != RESIZE_MODE_FORCE_RESIZABLE_LANDSCAPE_ONLY || landscape); } + /** + * @return {@code true} if the task is being cleared for the purposes of being reused. + */ + boolean isClearingToReuseTask() { + return mReuseTask; + } + /** * Find the activity in the history stack within the given task. Returns * the index within the history at which it's found, or < 0 if not found.