ConnectivityManager: no double callback remove
This patch partially undoes ag/869831 (Change-Id: Ia42ed7aefaebd8caf3eada8e42b6cb7a940d7647) so that ConnectivityManager does not remove callbacks from its internal request-to-callback map at unregistration, but instead let the singleton CallbackHandler do it when receiving a CALLBACK_RELEASED from ConnectivityService. ag/869831 was thought to fix b/26749700 that reported a callback leak from sNetworkCallback, but a finer analysis of the code shows that callbacks were correctly removed by the CallbackHandler before ag/869831. There was therefore no callback leak. Bug: 26749700 Bug: 28537383 Change-Id: I421d889d0e225c0e3d1eebea664f44a1cc0f3191
This commit is contained in:
@@ -3103,14 +3103,11 @@ public class ConnectivityManager {
|
||||
throw new IllegalArgumentException("Invalid NetworkCallback");
|
||||
}
|
||||
try {
|
||||
// CallbackHandler will release callback when receiving CALLBACK_RELEASED.
|
||||
mService.releaseNetworkRequest(networkCallback.networkRequest);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
|
||||
synchronized (sNetworkCallback) {
|
||||
sNetworkCallback.remove(networkCallback.networkRequest);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user