2012-01-19 60 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

相关问题