2012-10-05 11 views
6

de mensajes antiguos, como Android java.net.UnknownHostException: Host is unresolved (strategy question), se sugiere utilizar el siguiente código:¿El DNS de Android necesita calentamiento?

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

Así que significa cuando una entrada DNS no se almacena en caché en el dispositivo, por ejemplo, después del arranque, devolverá java.net.UnknownHostException: Host por primera vez, incluso para un DNS válido.

Respuesta

3

Depende de la versión de Android.

Si tiene una conexión a Internet y su aplicación declara que necesita acceso a Internet en el archivo de manifiesto, la dirección se resolverá sin problemas.

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

In Android 4.0 (Ice Cream Sandwich) and earlier, DNS caching was performed both by 
InetAddress and by the C library, which meant that DNS TTLs could not be honored 
correctly. In later releases, caching is done solely by the C library and DNS TTLs 
are honored.

Así que si la dirección está solicitando no es más antigua que el tiempo de vida , la caché contestará. Si no está en la memoria caché o ha expirado, entonces el sistema operativo intentará encontrarlo yendo a un servidor DNS. La excepción se produce solo cuando su conexión a Internet no está activa, o cuando no hay respuesta de DNS, no cuando falla la solicitud de caché.

Dicho esto, si está escribiendo su aplicación para androides mayores, entonces este problema puede molestar aún.

hay maneras de tratar con él:
Android: Flush DNS

Cuestiones relacionadas