summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@android.com>2011-01-05 19:10:15 -0800
committerAndroid Code Review <code-review@android.com>2011-01-05 19:10:15 -0800
commit3769240b7976bfa50bb7bf235747b7f6bb7be08e (patch)
tree554692e3e4faa4ae9401dfa5e1f277dd4ecf75fd
parent69ebb984f230a523dc316bdb2c9e9c28111364fd (diff)
parent58975915378fcecedbba7eb8d7a2117f9aa9e2ee (diff)
downloadframeworks_base-3769240b7976bfa50bb7bf235747b7f6bb7be08e.zip
frameworks_base-3769240b7976bfa50bb7bf235747b7f6bb7be08e.tar.gz
frameworks_base-3769240b7976bfa50bb7bf235747b7f6bb7be08e.tar.bz2
Merge "Clear reference to the IIntentReceiver in order to avoid memory leak"
-rw-r--r--services/java/com/android/server/am/ActivityManagerService.java3
-rw-r--r--services/java/com/android/server/am/BroadcastRecord.java2
2 files changed, 4 insertions, 1 deletions
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 16cd62b..da715db 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -11035,6 +11035,9 @@ public final class ActivityManagerService extends ActivityManagerNative
performReceiveLocked(r.callerApp, r.resultTo,
new Intent(r.intent), r.resultCode,
r.resultData, r.resultExtras, false, false);
+ // Set this to null so that the reference
+ // (local and remote) isnt kept in the mBroadcastHistory.
+ r.resultTo = null;
} catch (RemoteException e) {
Slog.w(TAG, "Failure sending broadcast result of " + r.intent, e);
}
diff --git a/services/java/com/android/server/am/BroadcastRecord.java b/services/java/com/android/server/am/BroadcastRecord.java
index b268efa..c95053e 100644
--- a/services/java/com/android/server/am/BroadcastRecord.java
+++ b/services/java/com/android/server/am/BroadcastRecord.java
@@ -45,7 +45,7 @@ class BroadcastRecord extends Binder {
final boolean initialSticky; // initial broadcast from register to sticky?
final String requiredPermission; // a permission the caller has required
final List receivers; // contains BroadcastFilter and ResolveInfo
- final IIntentReceiver resultTo; // who receives final result if non-null
+ IIntentReceiver resultTo; // who receives final result if non-null
long dispatchTime; // when dispatch started on this set of receivers
long receiverTime; // when current receiver started for timeouts.
long finishTime; // when we finished the broadcast.