diff options
author | Wale Ogunwale <ogunwale@google.com> | 2015-04-04 18:07:06 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-04-04 18:07:07 +0000 |
commit | 9e0f8deae851ec917613256dfbe899ae5c1b1ca5 (patch) | |
tree | a22642322218f1c5053537941c338de3f167d5d2 | |
parent | 950fbdff24fc1a76089d14314bc9d66fb346502c (diff) | |
parent | 000957cef387dc7d08fc6563e2221e9023194984 (diff) | |
download | frameworks_base-9e0f8deae851ec917613256dfbe899ae5c1b1ca5.zip frameworks_base-9e0f8deae851ec917613256dfbe899ae5c1b1ca5.tar.gz frameworks_base-9e0f8deae851ec917613256dfbe899ae5c1b1ca5.tar.bz2 |
Merge "Don't remove task from recents when moving task to another stack."
3 files changed, 16 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index fc1e61e..1108391 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -4203,14 +4203,22 @@ final class ActivityStack { } void removeTask(TaskRecord task, String reason) { - removeTask(task, reason, true); + removeTask(task, reason, true /* notMoving */); } - void removeTask(TaskRecord task, String reason, boolean removeFromWindowManager) { - mStackSupervisor.endLockTaskModeIfTaskEnding(task); - if (removeFromWindowManager) { + /** + * Removes the input task from this stack. + * @param task to remove. + * @param reason for removal. + * @param notMoving task to another stack. In the case we are moving we don't want to perform + * some operations on the task like removing it from window manager or recents. + */ + void removeTask(TaskRecord task, String reason, boolean notMoving) { + if (notMoving) { + mStackSupervisor.endLockTaskModeIfTaskEnding(task); mWindowManager.removeTask(task.taskId); } + final ActivityRecord r = mResumedActivity; if (r != null && r.task == task) { mResumedActivity = null; @@ -4227,7 +4235,7 @@ final class ActivityStack { mTaskHistory.remove(task); updateTaskMovement(task, true); - if (task.mActivities.isEmpty()) { + if (notMoving && task.mActivities.isEmpty()) { final boolean isVoiceSession = task.voiceSession != null; if (isVoiceSession) { try { diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index cd590cb..f8e9cbf 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -2836,7 +2836,7 @@ public final class ActivityStackSupervisor implements DisplayListener { } mWindowManager.moveTaskToStack(taskId, stackId, toTop); if (task.stack != null) { - task.stack.removeTask(task, "moveTaskToStack", false); + task.stack.removeTask(task, "moveTaskToStack", false /* notMoving */); } stack.addTask(task, toTop, true); resumeTopActivitiesLocked(); diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index b8f26c9..98ac5ef 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -78,7 +78,7 @@ class Task { } if (DEBUG_STACK) Slog.i(TAG, "moveTaskToStack: removing taskId=" + mTaskId + " from stack=" + mStack); - EventLog.writeEvent(EventLogTags.WM_TASK_REMOVED, mTaskId, "removeTask"); + EventLog.writeEvent(EventLogTags.WM_TASK_REMOVED, mTaskId, "moveTask"); if (mStack != null) { mStack.removeTask(this); } @@ -88,7 +88,7 @@ class Task { boolean removeAppToken(AppWindowToken wtoken) { boolean removed = mAppTokens.remove(wtoken); if (mAppTokens.size() == 0) { - EventLog.writeEvent(com.android.server.EventLogTags.WM_TASK_REMOVED, mTaskId, + EventLog.writeEvent(EventLogTags.WM_TASK_REMOVED, mTaskId, "removeAppToken: last token"); if (mDeferRemoval) { removeLocked(); |