summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Vairavan Srinivasan <vairav@codeaurora.org> 2010-12-23 13:51:48 -0800
committer Vairavan Srinivasan <vairav@codeaurora.org> 2010-12-23 13:51:48 -0800
commit50b9b94411edabf8c90f1981e561ec706b390da7 (patch)
treeda9be5095e53b13847ec3a8ebc343e8d490e97fb
parent3b10aea50c1044ff33d02727829c47c061f6e1c8 (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.java8
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,