Android java.net. UnknownHostException: Хост не разрешен (вопрос о стратегии)

У меня есть код Android, который использует фоновый процесс для обычно (например, каждый час) соединяются с источником содержания в сети для проверки на обновленное содержание. Поскольку новые пользователи загружают приложение и выполняют его впервые, это кажется (и это просто, "кажется в данный момент), что в этой ситуации первого показа, потому что DNS для наших серверов уже не кэшируется на устройстве, тех первых сериях сбоя соединений со страшным UnknownHostException: Хост не разрешен. И конечно, приложение попробовало еще раз позже и (снова, "оно походит"), что оно все работает - возможно, потому что ОС имела время для фактического разрешения адреса.

Так, мой вопрос (вопросы): (1) Делаете другие разработчики Android видят это поведение со своими развертываемыми приложениями также? В первый раз, серия "хоста неразрешенные" проблемы, которые разрешаются позже. (2) Делаете у кого-либо есть лучшая стратегия того, чтобы "нагреть DNS" так сказать так, чтобы первые реальные соединения работали? или возможно Вы просто повторяете с некоторым цикличным выполнением возврата при обнаружении с этим исключением? Я собирался иметь отдельный поток, который пытается выбрать небольшой текстовый файл с нашего сервера и иметь его просто цикл, пока это не добирается, он и возможно (не уверенный в этой части) блокирует другие исходящие сетевые соединения, пока он не успешно выполняется.

В любом случае я прочитал блок ответов на различные столь же сформулированные вопросы здесь на Переполнении стека и мне только для уверения всех это

<uses-permission android:name="android.permission.INTERNET" />

установлен в моем Файле манифеста :)

8
задан sorens 20 July 2010 в 19:34
поделиться

1 ответ

Я столкнулся с таким поведением при использовании HttpUrlConnection. Я использую простой обходной путь - выполняю следующий код непосредственно перед использованием любого url.

    try {
      InetAddress i = InetAddress.getByName(URLName);
    } catch (UnknownHostException e1) {
      e1.printStackTrace();
    }
// ... actually using URLName

В первый раз я получаю здесь UnknownHostException, но последующие использования url проходят успешно (DNS сервер возвращает правильный IP адрес и я могу подключиться к серверу).

15
ответ дан 5 December 2019 в 11:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: