am 825e0da2: Merge "Fix race when cleaning up receivers/services in Context" into lmp-mr1-dev

automerge: b7ce6d6

* commit 'b7ce6d6db1409ec785d2d7146cbcc897fd02d85b':
  Fix race when cleaning up receivers/services in Context
This commit is contained in:
Adam Lesinski
2014-11-21 02:36:57 +00:00
committed by android-build-merger

View File

@@ -632,6 +632,7 @@ public final class LoadedApk {
public void removeContextRegistrations(Context context, public void removeContextRegistrations(Context context,
String who, String what) { String who, String what) {
final boolean reportRegistrationLeaks = StrictMode.vmRegistrationLeaksEnabled(); final boolean reportRegistrationLeaks = StrictMode.vmRegistrationLeaksEnabled();
synchronized (mReceivers) {
ArrayMap<BroadcastReceiver, LoadedApk.ReceiverDispatcher> rmap = ArrayMap<BroadcastReceiver, LoadedApk.ReceiverDispatcher> rmap =
mReceivers.remove(context); mReceivers.remove(context);
if (rmap != null) { if (rmap != null) {
@@ -656,6 +657,9 @@ public final class LoadedApk {
} }
} }
mUnregisteredReceivers.remove(context); mUnregisteredReceivers.remove(context);
}
synchronized (mServices) {
//Slog.i(TAG, "Receiver registrations: " + mReceivers); //Slog.i(TAG, "Receiver registrations: " + mReceivers);
ArrayMap<ServiceConnection, LoadedApk.ServiceDispatcher> smap = ArrayMap<ServiceConnection, LoadedApk.ServiceDispatcher> smap =
mServices.remove(context); mServices.remove(context);
@@ -682,6 +686,7 @@ public final class LoadedApk {
mUnboundServices.remove(context); mUnboundServices.remove(context);
//Slog.i(TAG, "Service registrations: " + mServices); //Slog.i(TAG, "Service registrations: " + mServices);
} }
}
public IIntentReceiver getReceiverDispatcher(BroadcastReceiver r, public IIntentReceiver getReceiverDispatcher(BroadcastReceiver r,
Context context, Handler handler, Context context, Handler handler,