Android java.net.UnknownHostException: el host no está resuelto (pregunta de estrategia)

Tengo un código de Android que usa un proceso en segundo plano para conectarse de forma rutinaria (por ejemplo, cada hora) a un origen de contenido en la web para verificar si hay contenido actualizado. A medida que los nuevos usuarios descargan la aplicación y la ejecutan por primera vez, parece (y esto es solo “parece por el momento”) que en esta situación de primera ejecución, debido a que los DNS de nuestros servidores ya no están en la memoria caché en el dispositivo, esas primeras series de conexiones fallan con la temida UnknownHostException: Host no se resuelve. Y, por supuesto, la aplicación lo intenta más tarde y (de nuevo, “parece que”) todo está funcionando, quizás porque el sistema operativo ha tenido tiempo para resolver el problema. dirección.

Por lo tanto, mi (s) pregunta (s) son: (1) ¿Los desarrolladores de Android también ven este comportamiento con sus aplicaciones implementadas? Primera vez, una serie de problemas de “host no resuelto” que se resuelven más tarde. (2) ¿Alguien tiene una mejor estrategia para “calentar el DNS” por así decirlo, para que las primeras conexiones reales funcionen? o tal vez simplemente vuelves a intentarlo con un bucle de retroceso cuando te encuentras con esta excepción? Estaba pensando en tener un hilo separado que intente obtener un pequeño archivo de texto de nuestro servidor y tenerlo simplemente en bucle hasta que lo tenga y quizás (no estoy seguro acerca de esta parte) bloquear las otras conexiones de red salientes hasta que tenga éxito.

En cualquier caso, he leído una parte de las respuestas a varias preguntas formuladas de forma similar aquí en Stack Overflow y solo para asegurarles a todos que

 

está establecido en mi archivo Manifest 🙂

Me he encontrado con este comportamiento al usar HttpUrlConnection. Estoy usando una solución simple: ejecuto el siguiente código justo antes de usar cualquier url.

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

Por primera vez obtengo aquí UnknownHostException pero los siguientes usos de la url son exitosos (el servidor DNS devuelve la dirección IP correcta y puedo conectarme al servidor).