Ich habe Android-Code, der einen Hintergrundprozess verwendet, um routinemäßig (z. B. stündlich) eine Verbindung zu einer Inhaltsquelle im Internet herzustellen, um nach aktualisierten Inhalten zu suchen. Wenn neue Benutzer die App herunterladen und sie zum ersten Mal ausführen, scheint es (und das ist gerade ein "scheint im Moment"), dass in dieser ersten Situation, weil die DNS für unsere Server nicht bereits auf dem Gerät zwischengespeichert sind, Diese erste Reihe von Verbindungen scheitern mit gefürchteter UnknownHostException: Host ist nicht gelöst. Und natürlich versucht die Anwendung später erneut und (wieder scheint es so), es funktioniert alles - vielleicht, weil das OS Zeit hatte, das Problem zu lösen Adresse.
Meine Frage (n) lautet also: (1) Sehen andere Android-Entwickler dieses Verhalten auch bei ihren bereitgestellten Anwendungen? Das erste Mal, eine Reihe von "Host ungelöst" Probleme, die sich später selbst ausarbeiten. (2) Hat jemand eine bessere Strategie, den DNS sozusagen "aufzuwärmen", damit die ersten echten Verbindungen funktionieren? Oder versuchen Sie es mit einer Back-Off-Schleife, wenn Sie auf diese Ausnahme stoßen? Ich erwog, einen separaten Thread zu haben, der versucht, eine kleine Textdatei von unserem Server zu holen und sie einfach zu loopen, bis er sie bekommt und vielleicht (nicht sicher über diesen Teil) die anderen ausgehenden Netzwerkverbindungen blockiert, bis es erfolgreich ist.
Auf jeden Fall habe ich einen Teil der Antworten auf verschiedene ähnlich formulierte Fragen hier auf Stack Overflow gelesen und ich versichere es jedem,
%Vor%ist in meiner Manifest-Datei festgelegt:)
Ich habe bei der Verwendung von HttpUrlConnection auf dieses Verhalten gestoßen. Ich verwende eine einfache Problemumgehung - ich führe den folgenden Code aus, bevor ich irgendeine URL benutze.
%Vor%Zum ersten Mal bekomme ich hier UnknownHostException, aber die nächste Verwendung der URL ist erfolgreich (DNS-Server gibt die richtige IP-Adresse zurück und ich kann eine Verbindung zum Server herstellen).