From 0175b882b5e021907c307ab0e455bff014ad8784 Mon Sep 17 00:00:00 2001 From: Craig Mautner Date: Sun, 7 Sep 2014 18:05:31 -0700 Subject: [PATCH] Ignore finishing activities when fetching the top When the top activity is finishing we don't want to be comparing it for matches to launching activities. This was keeping curTop from matching itself when launching a lower task. Fixes bug 17383648. Change-Id: I837ac087ef965d99d12c98ab1c779de46716e204 --- .../core/java/com/android/server/am/ActivityStack.java | 10 +++++----- .../com/android/server/am/ActivityStackSupervisor.java | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 81c379a744b96..bc02a82702110 100755 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -425,13 +425,13 @@ final class ActivityStack { } final ActivityRecord topActivity() { - // Iterate to find the first non-empty task stack. Note that this code can - // be simplified once we stop storing tasks with empty mActivities lists. for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { ArrayList activities = mTaskHistory.get(taskNdx).mActivities; - final int topActivityNdx = activities.size() - 1; - if (topActivityNdx >= 0) { - return activities.get(topActivityNdx); + for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + final ActivityRecord r = activities.get(activityNdx); + if (!r.finishing) { + return r; + } } } return null; diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 780efa1a0032a..0816d195b9265 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -1768,7 +1768,7 @@ public final class ActivityStackSupervisor implements DisplayListener { if (intentActivity != null) { if (isLockTaskModeViolation(intentActivity.task)) { showLockTaskToast(); - Slog.e(TAG, "moveTaskToFront: Attempt to violate Lock Task Mode"); + Slog.e(TAG, "startActivityUnchecked: Attempt to violate Lock Task Mode"); return ActivityManager.START_RETURN_LOCK_TASK_MODE_VIOLATION; } if (r.task == null) {