2012-01-19 84 views
0

我有一個小問題,我可以連接到互聯網和輕鬆地讀取一個URL。但如果沒有互聯網連接可用,我得到ANR和我的應用程序被迫關閉! 有什麼幫助嗎?ANR在我的應用程序中,如果沒有互聯網連接

try { 
     URL Url = new URL(url); 
     HttpURLConnection httpCon = (HttpURLConnection) Url.openConnection(); 


     httpCon.setRequestMethod("GET"); 
     //httpCon.setReadTimeout(2000); 
     Log.v("Parser","before connect"); 
     //httpCon.connect(); 
     int response; 
      response = httpCon.getResponseCode(); 

     } catch (Exception urlExc) { 
      Log.v("Parser","into parser error" + urlExc.getCause()); 
      return false; 
     } 

當沒有連接可用時,它被強制關閉,而不是去追趕()

回答

1

你在主UI線程這樣做呢?如果是這樣,不要。研究使用後臺線程的衆多方法之一。

查看此Painless Threading文章進行討論。它說:

具體來說,如果一切都在一個單獨的線程發生, 執行長時間的操作,如網絡訪問或數據庫中的UI線程上查詢 會阻塞整個用戶界面。沒有事件可以是 派出,包括繪畫事件,而長操作是 正在進行。從用戶的角度來看,應用程序顯示爲掛起。 更糟糕的是,如果UI線程被阻止超過幾秒 (當前大約5秒),用戶將看到臭名昭着的 「應用程序無響應」(ANR)對話框。

ASyncTask可能是一個很好的起點。)

+0

非常感謝您!這解決了我的問題:) – ilyes90

相關問題