我有一個使用一個後臺進程定期(例如每小時)連接到內容源在網絡上檢查更新的內容Android的代碼。當新用戶第一次下載應用程序並運行它時,似乎(現在看來這似乎是)在第一次運行的情況下,因爲我們的服務器的DNS沒有被緩存在設備上,那些第一系列的連接失敗並帶有可怕的UnknownHostException:Host is unolved。當然,應用程序在稍後再次嘗試(再次,「看起來像」)它全部正常工作 - 可能是因爲OS有時間來真正解決地址的Android的java.net.UnknownHostException:主機是尚未解決的(戰略問題)
所以,我的問題是:(1)其他Android開發人員是否也看到了他們已部署的應用程序的這種行爲?第一次,一系列未解決的「主機未解決」問題。 2)有沒有人有更好的策略來「熱身DNS」這樣說話,以便第一次真正的連接起作用?或者當你遇到這個例外時,你可能會重新嘗試一些回退循環重刑?我打算有一個單獨的線程,試圖從我們的服務器獲取一個小文本文件,並讓它只是循環,直到它得到它,也許(不知道這部分)阻止其他傳出的網絡連接,直到它成功。
在任何情況下,我走過的答案在這裏對堆棧溢出各種類似的措詞問題的一大塊閱讀,我只是到
<uses-permission android:name="android.permission.INTERNET" />
在我的清單文件設置保證大家:)
我們遇到了同樣的問題。爲了分析它,我們實現了一個icmp ping,它將數據包發送到默認的dns(8.8.8.8)。我們觀察到,即使ip-ping測試成功(因此Internet連接可用),我們仍然遇到了UnknownHostException。任何想法可能是什麼原因呢? – icyerasor 2013-01-08 17:56:37