diff --git a/service/src/com/android/server/ConnectivityService.java b/service/src/com/android/server/ConnectivityService.java index 1ac22bd2c5..6453d765b6 100644 --- a/service/src/com/android/server/ConnectivityService.java +++ b/service/src/com/android/server/ConnectivityService.java @@ -9409,6 +9409,8 @@ public class ConnectivityService extends IConnectivityManager.Stub { nai.getDeclaredCapabilitiesSanitized(mCarrierPrivilegeAuthenticator))); processLinkPropertiesFromAgent(nai, nai.linkProperties); + nai.onNetworkMonitorCreated(networkMonitor); + mNetworkAgentInfos.add(nai); synchronized (mNetworkForNetId) { mNetworkForNetId.put(nai.network.getNetId(), nai); @@ -9423,7 +9425,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { if (nai.isLocalNetwork()) { handleUpdateLocalNetworkConfig(nai, null /* oldConfig */, nai.localNetworkConfig); } - nai.notifyRegistered(networkMonitor); + nai.notifyRegistered(); NetworkInfo networkInfo = nai.networkInfo; updateNetworkInfo(nai, networkInfo); updateVpnUids(nai, null, nai.networkCapabilities); diff --git a/service/src/com/android/server/connectivity/NetworkAgentInfo.java b/service/src/com/android/server/connectivity/NetworkAgentInfo.java index 6d25d63457..d6bd659946 100644 --- a/service/src/com/android/server/connectivity/NetworkAgentInfo.java +++ b/service/src/com/android/server/connectivity/NetworkAgentInfo.java @@ -700,9 +700,7 @@ public class NetworkAgentInfo implements NetworkRanker.Scoreable { * Must be called from the ConnectivityService handler thread. A NetworkAgent can only be * registered once. */ - public void notifyRegistered(final INetworkMonitor nm) { - HandlerUtils.ensureRunningOnHandlerThread(mHandler); - mNetworkMonitor = new NetworkMonitorManager(nm); + public void notifyRegistered() { try { networkAgent.asBinder().linkToDeath(mDeathMonitor, 0); networkAgent.onRegistered(); @@ -1039,6 +1037,13 @@ public class NetworkAgentInfo implements NetworkRanker.Scoreable { } } + /** + * Inform NetworkAgentInfo that a new NetworkMonitor was created. + */ + public void onNetworkMonitorCreated(INetworkMonitor networkMonitor) { + mNetworkMonitor = new NetworkMonitorManager(networkMonitor); + } + /** * Set the NetworkCapabilities on this NetworkAgentInfo. Also attempts to notify NetworkMonitor * of the new capabilities, if NetworkMonitor has been created.