diff options
author | 2010-12-23 13:51:48 -0800 | |
---|---|---|
committer | 2010-12-23 13:51:48 -0800 | |
commit | 50b9b94411edabf8c90f1981e561ec706b390da7 (patch) | |
tree | da9be5095e53b13847ec3a8ebc343e8d490e97fb | |
parent | 3b10aea50c1044ff33d02727829c47c061f6e1c8 (diff) |
frameworks/base: Fix to release references in ActivityManagerService
ServiceRecord's bindings is a hashmap to keep track of all active
bindings to the service. This is not cleared when the service is
brought down by activity manager. This adds up the references to
IntentBindRecords and its references to ServiceRecord. Fix is to
clear the bindings.
ServiceRecord's restarter is a reference to the service and is not
cleared when the service is brought down by activity manager. This
adds up the references to ServiceRecord. Fix is to set the reference
to null when the service is brought down by activity manager.
Change-Id: Ica448cd5f60192c8adb23209b5d0e2cf0c04e446
-rw-r--r-- | services/java/com/android/server/am/ActivityManagerService.java | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 6a05d3cfc4b8..16cd62beb338 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -9120,6 +9120,14 @@ public final class ActivityManagerService extends ActivityManagerNative if (DEBUG_SERVICE) Slog.v( TAG, "Removed service that is not running: " + r); } + + if (r.bindings.size() > 0) { + r.bindings.clear(); + } + + if (r.restarter instanceof ServiceRestarter) { + ((ServiceRestarter)r.restarter).setService(null); + } } ComponentName startServiceLocked(IApplicationThread caller, |