Android 10 requestNetwork () слишком долго отображает указанную сеть

#java #android #android-wifi #android-10.0

#java #Android #android-wifi #android-10.0

Вопрос:

Я пытаюсь подключить свое устройство Android 10 к сети Wi-Fi. Я использую API WiFiNetworkSpecifier для описания сетевых свойств, к которым я хочу подключиться. Соединение проходит нормально, но я часто вижу, что запрос, показанный пользователю, занимает слишком много времени (от 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);
  

С подключением проблем нет, но время, затраченное ОС на поиск запрошенной сети, для меня не подходит. Есть ли какие-либо проблемы в моем коде?

Большое спасибо

Ответ №1:

В результате сравнительных экспериментов установлено, что Android 11 может работать так же хорошо, как Android 9

Я думаю, это ошибка Android 10. Сравнивая код Android 11 и Android 10, мы обнаруживаем, что существует разница в сетевом процессе запроса.

Комментарии:

1. ConnectivityService.requestNetwork -> WIFINetworkFactory-> needNetworkFor