ServiceConnection: Properly serialize events

am: a9b43182c6

Change-Id: I3571754de4d659aaf6b4a61fa14ae8256ca29f7a
This commit is contained in:
Adrian Roos
2016-07-22 17:17:18 +00:00
committed by android-build-merger

View File

@@ -1396,18 +1396,6 @@ public final class LoadedApk {
}
public void death(ComponentName name, IBinder service) {
ServiceDispatcher.ConnectionInfo old;
synchronized (this) {
old = mActiveConnections.remove(name);
if (old == null || old.binder != service) {
// Death for someone different than who we last
// reported... just ignore it.
return;
}
old.binder.unlinkToDeath(old.deathMonitor, 0);
}
if (mActivityThread != null) {
mActivityThread.post(new RunConnection(name, service, 1));
} else {
@@ -1456,7 +1444,7 @@ public final class LoadedApk {
}
}
// If there was an old service, it is not disconnected.
// If there was an old service, it is now disconnected.
if (old != null) {
mConnection.onServiceDisconnected(name);
}
@@ -1467,6 +1455,17 @@ public final class LoadedApk {
}
public void doDeath(ComponentName name, IBinder service) {
synchronized (this) {
ConnectionInfo old = mActiveConnections.get(name);
if (old == null || old.binder != service) {
// Death for someone different than who we last
// reported... just ignore it.
return;
}
mActiveConnections.remove(name);
old.binder.unlinkToDeath(old.deathMonitor, 0);
}
mConnection.onServiceDisconnected(name);
}