繁体   English   中英

Android java.net.UnknownHostException:主机未解析(策略问题)

[英]Android java.net.UnknownHostException: Host is unresolved (strategy question)

我有安卓代码,它使用后台进程定期(例如每小时)连接到Web上的内容源以检查更新的内容。 当新用户第一次下载应用程序并运行它时,似乎(这只是“目前似乎”)在这种首次运行的情况下,因为我们的服务器的DNS尚未在设备上缓存,那些第一系列连接因可怕的UnknownHostException而失败:主机未解析。当然,应用程序稍后再次尝试(再次,“看起来像”)它一切正常 - 也许是因为操作系统有时间实际解决地址。

所以,我的问题是:(1)其他Android开发人员是否也看到了他们部署的应用程序的这种行为? 第一次,一系列“主持人未解决”的问题在以后发挥作用。 (2)有没有人有更好的策略来“加热DNS”这么说,以便第一个真正的连接起作用? 或者,当您遇到此异常时,您是否只是重新尝试使用一些后退循环? 我正在考虑有一个单独的线程试图从我们的服务器获取一个小文本文件,让它只是循环,直到它得到它,并可能(不确定这部分)阻止其他传出网络连接,直到它成功。

无论如何,我已经在Stack Overflow上阅读了各种类似措辞问题的答案,我只是向大家保证

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

在我的清单文件中设置:)

我在使用HttpUrlConnection时遇到过这种行为。 我使用简单的解决方法 - 我在使用任何url之前执行以下代码。

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

我第一次在这里获得UnknownHostException,但是url的下一个用法是成功的(DNS服务器返回正确的IP地址,我可以连接到服务器)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM