diff options
author | Dianne Hackborn <hackbod@google.com> | 2013-11-21 12:50:01 -0800 |
---|---|---|
committer | The Android Automerger <android-build@google.com> | 2013-11-21 20:29:42 -0800 |
commit | bf2ed3fc16ff17d81ccb48b37d7043e9dd79799a (patch) | |
tree | 5c6bccce79564bcc44456dbf7031a5973db0a201 | |
parent | c4294fbb7b70870fea1b33c370a5e90b23e54d4b (diff) | |
download | base-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.java | 8 |
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; |