英文:
Android 10 requestNetwork() takes too long displaying specified network
问题
我正在尝试将我的 Android 10 设备连接到 WiFi 网络。我正在使用 WiFiNetworkSpecifier API 来描述我想要连接的网络属性。连接进程进行得很好,但我经常看到用户显示的提示花费的时间太长(从 2 到 28 秒不等),才会显示我用 WifiNetworkSpecifier 对象描述的网络。
以下是我的代码(与此处链接的 Google 示例相同 -> https://developer.android.com/guide/topics/connectivity/wifi-bootstrap)
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest networkRequest = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.setNetworkSpecifier(
new WifiNetworkSpecifier.Builder()
.setSsid(SSID)
.setWpa2Passphrase(psw)
.build()
)
.build();
networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(@NonNull Network network) {
if (WiFiCoordinator.this.listner != null){
WiFiCoordinator.this.listner.onConnected();
}
cm.bindProcessToNetwork(network);
}
@Override
public void onUnavailable() {
super.onUnavailable();
listner.onTestNetworkNotAvailable();
}
};
cm.requestNetwork(networkRequest, networkCallback);
连接本身没有问题,但操作系统寻找所请求的网络所花费的时间对我来说并不理想。在我的代码中是否存在任何问题?
非常感谢。
英文:
I'm trying to connect my Android 10 device to a WiFi network. I'm using the WiFiNetworkSpecifier API to describe the network properties I want to connect to. The connection goes well, but I see often that the prompt shown to the user is taking too long (from 2 to 28 seconds) to display the network I described with WifiNetworkSpecifier object.
Here is my code (it is the same as the Google example linked here -> https://developer.android.com/guide/topics/connectivity/wifi-bootstrap)
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest networkRequest = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.setNetworkSpecifier(
new WifiNetworkSpecifier.Builder()
.setSsid(SSID)
.setWpa2Passphrase(psw)
.build()
)
.build();
networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(@NonNull Network network) {
if (WiFiCoordinator.this.listner != null){
WiFiCoordinator.this.listner.onConnected();
}
cm.bindProcessToNetwork(network);
}
@Override
public void onUnavailable() {
super.onUnavailable();
listner.onTestNetworkNotAvailable();
}
};
cm.requestNetwork(networkRequest, networkCallback);
The connection has no problem, but the time spent by the OS looking for the requested network is not ok for me. Is there any problem in my code?
Thanks a lot
答案1
得分: 1
通过比较实验发现,Android 11 的表现与 Android 9 相当。
我猜是 Android 10 的一个错误。比较 Android 11 和 Android 10 的代码,我们发现在请求网络过程中存在差异。
英文:
Through comparative experiments, it is found that Android 11 can work as well as Android 9
I guess it's the Android 10 bug. Comparing the code of Android 11 and Android 10, we find that there is a difference in the request network process.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论