Android java.net.UnknownHostException: Host no resuelto (pregunta de estrategia)

Tengo el código de androide que utiliza un proceso del fondo para rutinariamente (eg cada hora) conecte con un fuente de contenido en la tela para comprobar para saber si hay contenido actualizado. A medida que los nuevos usuarios descargan la aplicación y la ejecutan por primera vez, parece (y esto es sólo un "parece por el momento") que en esta situación de primera ejecución, ya que los DNS para nuestros servidores no están en caché ya en el dispositivo, La primera serie de conexiones falla con el desconocido UnknownHostException: Host no está resuelto y, por supuesto, la aplicación vuelve a intentarlo más tarde y (de nuevo, "parece que") todo funciona – tal vez porque el sistema operativo ha tenido tiempo para resolver el problema dirección.

Por lo tanto, mi pregunta (s) son: (1) ¿Otros desarrolladores de Android ven este comportamiento con sus aplicaciones desplegadas también? Primera vez, una serie de "anfitrión no resuelto" cuestiones 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 usted acaba de volver a intentar con algunos back-off de bucle cuando se encuentra con esta excepción? Yo estaba pensando en tener un hilo separado que intenta obtener un pequeño archivo de texto de nuestro servidor y tenerlo sólo el bucle hasta que lo recibe y tal vez (no está seguro acerca de esta parte) bloquear las otras conexiones de red saliente hasta que tenga éxito.

En cualquier caso, he leído a través de un pedazo de las respuestas a varias preguntas redactadas de forma similar aquí en Stack Overflow y yo sólo para asegurar a todos que

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

Se establece en mi archivo de manifiesto 🙂

He encontrado este comportamiento mientras uso HttpUrlConnection. Estoy utilizando solución simple – ejecuto el código siguiente 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 usos siguientes del URL son acertados (el servidor del DNS devuelve la dirección IP apropiada y puedo conectarme al servidor).

  • ¿Cuándo usar parcelable en android?
  • Pruebas de Android: Diálogo. Compruebe que esShowing ()
  • FilenameFilter, buscando carpetas
  • Android Studio: Cómo elegir qué importar de VCS
  • Android.provider.Settings.Secure.ANDROID_ID devuelve "android_id"
  • Convertir byte en Tipo de búfer
  • ¿Hay alguna manera de iniciar la aplicación justo después de la instalación usando alguna "aplicación auxiliar"?
  • FireBase Job Dispatcher. El trabajo comienza después de 20-60 seg, incluso con Triger.Now. ¿Cómo puedo arreglarlo?
  • Cálculo de intersecciones entre segmentos de línea
  • Diferencia entre ConnectionTimeoutException y SSLException con el mensaje "Tiempo de espera de conexión agotado"
  • Understading ART / Dalvik compilación correctamente
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.