From 45a25bcfc9af74bc4275cc710347304e581f3c51 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Thu, 28 Jun 2012 13:49:17 -0700 Subject: Fix issue #6745498: Cannot view consecutive event details from agenda view - There was a long-standing bug when using FLAG_ACTIVITY_REORDER_TO_FRONT where we could find and use an activity that is currently finishing. - There was a recently introduced bug where activities being destroyed would not be removed from the history stack at the time they are done being destroyed, allowing the above bug to be exposed. - Removing a task would not kill any processes associated with the app that had a different name from the app itself. Change-Id: I4401ab6d348a69e1ac4fb8f719d2c69d5a78e567 --- .../com/android/server/am/ActivityManagerService.java | 19 ++++++++++++++----- .../java/com/android/server/am/ActivityStack.java | 5 ++++- 2 files changed, 18 insertions(+), 6 deletions(-) (limited to 'services') diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index f482552..95d3c41 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -5704,12 +5704,19 @@ public final class ActivityManagerService extends ActivityManagerNative if (killProcesses) { // Find any running processes associated with this app. + final String pkg = component.getPackageName(); ArrayList procs = new ArrayList(); - SparseArray appProcs - = mProcessNames.getMap().get(component.getPackageName()); - if (appProcs != null) { - for (int i=0; i> pmap = mProcessNames.getMap(); + for (SparseArray uids : pmap.values()) { + for (int i=0; i 0) { i--; ActivityRecord candidate = mHistory.get(i); + if (candidate.finishing) { + continue; + } if (candidate.task.taskId != task) { break; } @@ -4057,7 +4060,7 @@ final class ActivityStack { int index = indexOfActivityLocked(r); if (index >= 0) { if (r.state == ActivityState.DESTROYING) { - cleanUpActivityLocked(r, true, true); + cleanUpActivityLocked(r, true, false); removeActivityFromHistoryLocked(r); } } -- cgit v1.1