diff options
Diffstat (limited to 'services/java/com/android')
-rw-r--r-- | services/java/com/android/server/am/ActivityStack.java | 69 | ||||
-rw-r--r-- | services/java/com/android/server/wm/WindowManagerService.java | 1 |
2 files changed, 33 insertions, 37 deletions
diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java index 30a7e23..e0b8015 100644 --- a/services/java/com/android/server/am/ActivityStack.java +++ b/services/java/com/android/server/am/ActivityStack.java @@ -4850,44 +4850,8 @@ final class ActivityStack { * @return Returns true if the move completed, false if not. */ final boolean moveTaskToBackLocked(int task, ActivityRecord reason) { - if (!newMoveTaskToBackLocked(task, reason)) { - return false; - } - - final int N = mHistory.size(); - int bottom = 0; - int pos = 0; - - // Shift all activities with this task down to the bottom - // of the stack, keeping them in the same internal order. - while (pos < N) { - ActivityRecord r = mHistory.get(pos); - if (localLOGV) Slog.v( - TAG, "At " + pos + " ckp " + r.task + ": " + r); - if (r.task.taskId == task) { - if (localLOGV) Slog.v(TAG, "Removing and adding at " + (N-1)); - if (DEBUG_ADD_REMOVE) { - RuntimeException here = new RuntimeException("here"); - here.fillInStackTrace(); - Slog.i(TAG, "Removing and adding activity " + r + " to stack at " - + bottom, here); - } - mHistory.remove(pos); - mHistory.add(bottom, r); - bottom++; - } - pos++; - } - if (VALIDATE_TASK_REPLACE) { - verifyActivityRecords(true); - } - - return true; - } - - final boolean newMoveTaskToBackLocked(int task, ActivityRecord reason) { Slog.i(TAG, "moveTaskToBack: " + task); - + // If we have a watcher, preflight the move before committing to it. First check // for *other* available tasks, but if none are available, then try again allowing the // current task to be selected. @@ -4917,6 +4881,36 @@ final class ActivityStack { mTaskHistory.remove(tr); mTaskHistory.add(0, tr); + // BEGIN REGION TO REMOVE. + final int N = mHistory.size(); + int bottom = 0; + int pos = 0; + + // Shift all activities with this task down to the bottom + // of the stack, keeping them in the same internal order. + while (pos < N) { + ActivityRecord r = mHistory.get(pos); + if (localLOGV) Slog.v( + TAG, "At " + pos + " ckp " + r.task + ": " + r); + if (r.task.taskId == task) { + if (localLOGV) Slog.v(TAG, "Removing and adding at " + (N-1)); + if (DEBUG_ADD_REMOVE) { + RuntimeException here = new RuntimeException("here"); + here.fillInStackTrace(); + Slog.i(TAG, "Removing and adding activity " + r + " to stack at " + + bottom, here); + } + mHistory.remove(pos); + mHistory.add(bottom, r); + bottom++; + } + pos++; + } + if (VALIDATE_TASK_REPLACE) { + verifyActivityRecords(true); + } + // END REGION TO REMOVE + if (reason != null && (reason.intent.getFlags()&Intent.FLAG_ACTIVITY_NO_ANIMATION) != 0) { mService.mWindowManager.prepareAppTransition(AppTransition.TRANSIT_NONE, false); @@ -4929,6 +4923,7 @@ final class ActivityStack { AppTransition.TRANSIT_TASK_TO_BACK, false); } mService.mWindowManager.moveTaskToBottom(task); + if (VALIDATE_TOKENS) { validateAppTokensLocked(); } diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index c2213b3..6a5ded0 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -3158,6 +3158,7 @@ public class WindowManagerService extends IWindowManager.Stub if (mismatch || iterator.hasNext()) { Slog.w(TAG, "validateAppTokens: Mismatch! ActivityManager=" + tasks); Slog.w(TAG, "validateAppTokens: Mismatch! WindowManager=" + iterator); + Slog.w(TAG, "validateAppTokens: Mismatch! Callers=" + Debug.getCallers(4)); } } } |