diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 9a4f804cb1b3b..28a4e1ab298fa 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -759,6 +759,12 @@ class ActivityStack extends ConfigurationContai } } + final void removeActivitiesFromLRUListLocked(TaskRecord task) { + for (ActivityRecord r : task.mActivities) { + mLRUActivities.remove(r); + } + } + final boolean updateLRUListLocked(ActivityRecord r) { final boolean hadit = mLRUActivities.remove(r); mLRUActivities.add(r); @@ -4947,6 +4953,7 @@ class ActivityStack extends ConfigurationContai } } mTaskHistory.remove(task); + removeActivitiesFromLRUListLocked(task); updateTaskMovement(task, true); if (mode == REMOVE_TASK_MODE_DESTROYING && task.mActivities.isEmpty()) { @@ -5114,6 +5121,7 @@ class ActivityStack extends ConfigurationContai // Apps may depend on onResume()/onPause() being called in pairs. if (setResume) { mResumedActivity = r; + updateLRUListLocked(r); } // If the activity was previously pausing, then ensure we transfer that as well if (setPause) { diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 27b8e91981c01..8559dcaf06b2c 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -3555,8 +3555,16 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D stackHeader.append(" mFullscreen=" + stack.mFullscreen); stackHeader.append("\n"); stackHeader.append(" mBounds=" + stack.mBounds); - printed |= stack.dumpActivitiesLocked(fd, pw, dumpAll, dumpClient, dumpPackage, - needSep, stackHeader.toString()); + + final boolean printedStackHeader = stack.dumpActivitiesLocked(fd, pw, dumpAll, + dumpClient, dumpPackage, needSep, stackHeader.toString()); + printed |= printedStackHeader; + if (!printedStackHeader) { + // Ensure we always dump the stack header even if there are no activities + pw.println(); + pw.println(stackHeader); + } + printed |= dumpHistoryList(fd, pw, stack.mLRUActivities, " ", "Run", false, !dumpAll, false, dumpPackage, true, " Running activities (most recent first):", null);