summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWale Ogunwale <ogunwale@google.com>2015-04-04 18:07:06 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-04-04 18:07:07 +0000
commit9e0f8deae851ec917613256dfbe899ae5c1b1ca5 (patch)
treea22642322218f1c5053537941c338de3f167d5d2
parent950fbdff24fc1a76089d14314bc9d66fb346502c (diff)
parent000957cef387dc7d08fc6563e2221e9023194984 (diff)
downloadframeworks_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."
-rw-r--r--services/core/java/com/android/server/am/ActivityStack.java18
-rw-r--r--services/core/java/com/android/server/am/ActivityStackSupervisor.java2
-rw-r--r--services/core/java/com/android/server/wm/Task.java4
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();