1.修改 frameworks/libs/net/common/device/android/net/NetworkFactoryImpl.java文件
+++ b/frameworks/libs/net/common/device/android/net/NetworkFactoryImpl.java
@@ -22,7 +22,7 @@ import android.content.Context;
import android.net.NetworkProvider.NetworkOfferCallback;
import android.os.Looper;
import android.os.Message;
-
+import android.os.SystemProperties;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.LinkedHashMap;
@@ -251,14 +251,31 @@ class NetworkFactoryImpl extends NetworkFactoryLegacyImpl {
}
}
+ // private void handleRemoveRequest(NetworkRequest request) {
+ // NetworkRequestInfo n = mNetworkRequests.get(request);
+ // if (n != null) {
+
+ // mNetworkRequests.remove(request);
+ // if (n.requested) mParent.releaseNetworkFor(n.request);
+ // }
+ // }
+
private void handleRemoveRequest(NetworkRequest request) {
- NetworkRequestInfo n = mNetworkRequests.get(request);
- if (n != null) {
- mNetworkRequests.remove(request);
- if (n.requested) mParent.releaseNetworkFor(n.request);
+ // start
+ boolean isNetworkCoexistEnabled = SystemProperties.getBoolean("persist.sys.network_coexistence", false);
+ if (!isNetworkCoexistEnabled) {
+ return;
+ }
+ // end
+
+ NetworkRequestInfo n = mNetworkRequests.get(request);
+ if (n != null) {
+ mNetworkRequests.remove(request);
+ if (n.requested) mParent.releaseNetworkFor(n.request);
}
}
+
private void handleSetScore(@NonNull final NetworkScore score) {
if (mScore.equals(score)) return;
mScore = score;
2.packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
+++ b/packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
@@ -16,6 +16,8 @@
package com.android.server;
+import android.os.SystemProperties;
+
import static android.Manifest.permission.RECEIVE_DATA_ACTIVITY_CHANGE;
import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
import static android.content.pm.PackageManager.FEATURE_WATCH;
@@ -3773,7 +3775,20 @@ public class ConnectivityService extends IConnectivityManager.Stub
// the destroyed flag is only just above the "current satisfier wins"
// tie-breaker. But technically anything that affects scoring should rematch.
rematchAllNetworksAndRequests();
- mHandler.postDelayed(() -> nai.disconnect(), timeoutMs);
+
+ // mHandler.postDelayed(() -> nai.disconnect(), timeoutMs);
+ mHandler.postDelayed(() -> {
+ // start
+ boolean isReleaseNetwork = SystemProperties.getBoolean("persist.sys.network_coexistence", false);
+ Log.e(TAG, "disconnect isReleaseNetwork = " + isReleaseNetwork);
+ if (!isReleaseNetwork) {
+ return;
+ }
+ // end
+
+ nai.disconnect();
+ }, timeoutMs);
+
break;
}
}
@@ -8522,6 +8537,15 @@ public class ConnectivityService extends IConnectivityManager.Stub
return;
}
/// AW CODE END
+
+ // start
+ boolean isReleaseNetwork = SystemProperties.getBoolean("persist.sys.network_coexistence", true);
+ Log.e(TAG, "disconnect isReleaseNetwork = " + isReleaseNetwork);
+ if (!isReleaseNetwork) {
+ return;
+ }
+ //end
+
nai.disconnect();
}
2354

被折叠的 条评论
为什么被折叠?



