summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2013-11-21 12:50:01 -0800
committerThe Android Automerger <android-build@google.com>2013-11-21 20:29:42 -0800
commitbf2ed3fc16ff17d81ccb48b37d7043e9dd79799a (patch)
tree5c6bccce79564bcc44456dbf7031a5973db0a201
parentc4294fbb7b70870fea1b33c370a5e90b23e54d4b (diff)
downloadbase-bf2ed3fc16ff17d81ccb48b37d7043e9dd79799a.tar.gz
Fix issue #11790471: Crash removed home buttons and notification bar/shade
Whoops persistent processes are, well, persistent. Don't remove services from them. We'll be keeping that process record around. Change-Id: I29e9fb6f704efdf0caad5e0307a7adbb416eed3b
-rw-r--r--services/java/com/android/server/am/ActiveServices.java8
1 files changed, 5 insertions, 3 deletions
diff --git a/services/java/com/android/server/am/ActiveServices.java b/services/java/com/android/server/am/ActiveServices.java
index 933247e1f687..89bddc6a4fac 100644
--- a/services/java/com/android/server/am/ActiveServices.java
+++ b/services/java/com/android/server/am/ActiveServices.java
@@ -1847,7 +1847,7 @@ public final class ActiveServices {
}
}
if (finishing) {
- if (r.app != null) {
+ if (r.app != null && !r.app.persistent) {
r.app.services.remove(r);
}
r.app = null;
@@ -1930,7 +1930,9 @@ public final class ActiveServices {
Slog.i(TAG, " Force stopping service " + service);
if (service.app != null) {
service.app.removed = true;
- service.app.services.remove(service);
+ if (!service.app.persistent) {
+ service.app.services.remove(service);
+ }
}
service.app = null;
service.isolatedProc = null;
@@ -2032,7 +2034,7 @@ public final class ActiveServices {
synchronized (sr.stats.getBatteryStats()) {
sr.stats.stopLaunchedLocked();
}
- if (sr.app != null) {
+ if (sr.app != null && !sr.app.persistent) {
sr.app.services.remove(sr);
}
sr.app = null;