【问题标题】:Does Android DNS need warm up?Android DNS 需要预热吗?
【发布时间】:2012-10-05 08:33:56
【问题描述】:

来自Android java.net.UnknownHostException: Host is unresolved (strategy question)等旧帖,建议使用以下代码:

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

这是否意味着当 DNS 条目未缓存在设备中时,例如启动后,它会第一次返回java.net.UnknownHostException: Host,即使是有效的DNS?

【问题讨论】:

    标签: android dns android-networking


    【解决方案1】:

    这取决于安卓的版本。

    如果您有 Internet 连接并且您的应用程序在清单文件中声明它需要 Internet 访问,那么地址应该可以毫无问题地解析。

    http://developer.android.com/reference/java/net/InetAddress.html

    在 Android 4.0(Ice Cream Sandwich)及更早版本中,DNS 缓存由
    InetAddress 和 C 库,这意味着无法接受 DNS TTL
    正确。在以后的版本中,缓存仅由 C 库和 DNS TTL 完成
    很荣幸。

    因此,如果您要求的地址不早于生存时间,缓存会回答。如果它不在缓存中或已过期,则操作系统将尝试通过转到 DNS 服务器来找到它。仅当您的 Internet 连接未启动或没有 DNS 响应时引发异常,而不是在缓存请求失败时引发。

    也就是说,如果您正在为较旧的 android 编写应用程序,那么这个问题可能仍然会困扰您。

    有办法处理:
    Android: Flush DNS

    【讨论】:

      猜你喜欢
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多