diff options
author | Dianne Hackborn <hackbod@google.com> | 2011-09-09 14:53:53 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-09-09 14:53:53 -0700 |
commit | e123612c08719352d3313005d0b792f17bbe090d (patch) | |
tree | 18960bcb7fc2f865efa174eb486d5de8a4f47317 | |
parent | 104f6a07c9b0613c8a8332eba91e3f93dcb6f083 (diff) | |
parent | e5ba16a7afd55e3b36d6124e9fce368bca9b7e67 (diff) | |
download | frameworks_base-e123612c08719352d3313005d0b792f17bbe090d.zip frameworks_base-e123612c08719352d3313005d0b792f17bbe090d.tar.gz frameworks_base-e123612c08719352d3313005d0b792f17bbe090d.tar.bz2 |
Merge "Work on issue #5144065: Tap on Music icon from Home screen - a different app opens"
-rw-r--r-- | services/java/com/android/server/am/ActivityManagerService.java | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index d6d3b9d..41af137 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -3327,20 +3327,28 @@ public final class ActivityManagerService extends ActivityManagerNative boolean didSomething = killPackageProcessesLocked(name, uid, -100, callerWillRestart, false, doit, evenPersistent); - for (i=mMainStack.mHistory.size()-1; i>=0; i--) { + TaskRecord lastTask = null; + for (i=0; i<mMainStack.mHistory.size(); i++) { ActivityRecord r = (ActivityRecord)mMainStack.mHistory.get(i); - if (r.packageName.equals(name) + final boolean samePackage = r.packageName.equals(name); + if ((samePackage || r.task == lastTask) && (r.app == null || evenPersistent || !r.app.persistent)) { if (!doit) { return true; } didSomething = true; Slog.i(TAG, " Force finishing activity " + r); - if (r.app != null) { - r.app.removed = true; + if (samePackage) { + if (r.app != null) { + r.app.removed = true; + } + r.app = null; + } + lastTask = r.task; + if (r.stack.finishActivityLocked(r, i, Activity.RESULT_CANCELED, + null, "force-stop")) { + i--; } - r.app = null; - r.stack.finishActivityLocked(r, i, Activity.RESULT_CANCELED, null, "uninstall"); } } |