我有 Android 代码,它使用后台进程定期(例如每小时)连接到网络上的内容源以检查更新的内容。当新用户下载该应用程序并首次运行它时,似乎(这只是“目前看来”)在首次运行的情况下,因为我们服务器的 DNS 尚未缓存在设备上,第一个系列的连接因可怕的 UnknownHostException: Host is unresolved 而失败。当然,应用程序稍后会再次尝试,并且(再次,“看起来像”)一切正常 - 也许是因为操作系统有时间实际解决该问题地址。
所以,我的问题是:(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 地址,我可以连接到该服务器)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)